ウェブサイトの技術データをスクラップするために私が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);
}
問題は、私はそれとして、それ以上systemfreezesを行うときに、私は、しかし、時間で1000〜私がやって小さなセクションに、配列をスライス私はこのループを実行したURLの非常に大きなリストを持っていますかなりのCPUを使用していますが、このコードをどのように非同期で実行し、URLをキューに入れるのですか?また、イントールするための簡単なNPMパッケージがありますか?私は周りを見ていて、使いやすいものは見つけられていません。
おそらく、async/await +約束はいくらか助けになることがありますか?あなたがノードのバージョンがそれをサポートしていれば、 – Endless
私はブルーバードを見ましたが、本当に理解できませんでした。 – user3679330
どのノードのバージョンを使用していますか? – Endless