我有以下代码,我使用wappalyzer刮擦网站的技术数据。排队URL和异步代码
const wappalyzer = require('wappalyzer');
var fs = require('fs');
var myArray =[http://www.url1.com, http://www.url2.com ...] // it's a very
long array of URLs
var dataSlice = myArray.slice(0, 1000);
console.log(dataSlice);
fs.appendFileSync('webData.json', '[', 'utf8');
var done = {};
var count = 0;
for(i = 0; i < dataSlice.length; i++) {
(function(i){
wappalyzer.run([dataSlice[i], '--quiet'], function(stdout, stderr) {
//Keep track of when all urls are done
if(!done[i]){
done[i] = true;
count++;
if (stdout) {
var arr = stdout.split('\n');
stdout = arr.filter(function(elem, pos) {
return arr.indexOf(elem) == pos;
});
stdout = stdout.join('');
stdout = count >= dataSlice.length ? (stdout + ']') : (stdout +
',');
fs.appendFileSync('WebData.json', stdout, 'utf8');
}
}
if (stderr) {
process.stderr.write(stderr);
}
});
})(i);
}
的问题是我有我通过这个循环运行的URL的一个非常大的列表,以便我切片阵列成较小的部分做〜1000同时然而,当我做任何更多的systemfreezes因为它使用相当多的CPU,我将如何异步运行此代码并排列URL?还有一个简单的NPM软件包可以安装吗?我环顾四周,没有发现任何易于使用的东西。
也许异步/等待+承诺可以有一些帮助?如果你的节点版本支持它 – Endless
我看过蓝鸟,但不能真正理解它,我有点新。 – user3679330
你使用什么节点版本? – Endless