Geniş bir URL dizisini yükleyen bir uygulama ile bir kontrol akışı sorunu yaşıyorum. Caolan Async ve NPM istek modülünü kullanıyorum.Async paralel HTTP isteği
Sorunum, işlevin kuyruğa eklendiği anda HTTP yanıtının başlamasıdır. İdeal olarak kuyruğumu oluşturmak ve sadece kuyruk başladığında HTTP isteklerini yapmaya başlamak istiyorum. Aksi takdirde, geri çağrılar, kuyruk başlamadan önce ateşlemeye başlar - kuyruğun zamanından önce bitmesine neden olur.
var request = require('request') // https://www.npmjs.com/package/request
, async = require('async'); // https://www.npmjs.com/package/async
var myLoaderQueue = []; // passed to async.parallel
var myUrls = ['http://...', 'http://...', 'http://...'] // 1000+ urls here
for(var i = 0; i < myUrls.length; i++){
myLoaderQueue.push(function(callback){
// Async http request
request(myUrls[i], function(error, response, html) {
// Some processing is happening here before the callback is invoked
callback(error, html);
});
});
}
// The loader queue has been made, now start to process the queue
async.parallel(queue, function(err, results){
// Done
});
Buna saldırmanın daha iyi bir yolu var mı?
Mükemmel çalışıyor. Teşekkürler. – ChrisRich
ES6'da bu daha az sorunlu olabilir mi? – xShirase
@xShirase ES6, '' '' '' bloğuna '' kapsamı '' olan '' let' kullanarak blok izlemeye sahiptir; var olan kodda, 'var' ile, 'myUrls [i] ' – robertklep