我有以下代碼,我使用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