Javascript 异步队列与请求挂起
我有一个函数,可以循环内容并调用结果。然后,我将该结果添加到一个并发度为1的异步队列中。然后,我使用提供的内容发出请求,并将结果流式传输到文件中。但由于某种原因,三次电话之后,排队的人似乎都挂断了,我不知道为什么Javascript 异步队列与请求挂起,javascript,node.js,asynchronous,request,Javascript,Node.js,Asynchronous,Request,我有一个函数,可以循环内容并调用结果。然后,我将该结果添加到一个并发度为1的异步队列中。然后,我使用提供的内容发出请求,并将结果流式传输到文件中。但由于某种原因,三次电话之后,排队的人似乎都挂断了,我不知道为什么 var async = require('async'); var request = require('request'); var queue = async.queue(function (url, callback) { var file = fs.createWri
var async = require('async');
var request = require('request');
var queue = async.queue(function (url, callback) {
var file = fs.createWriteStream('./images/' + url.split('/')[5])
var image = request(url);
image.pipe(file);
file.on('close', function() {
callback('done')
})
},1);
getUrls(query, function(e, url) {
queue.push(url, function(data) {
console.log(data)
});
});
queue.drain = function() {
console.log('all items have been processed');
}
Assume all files are just random images like this
http://pandodaily.files.wordpress.com/2014/03/google-in-bed-w-mercenaries-n-military-e1395865855795.jpg?w=900&h=499
还假设getURL
正在向队列中吐出5-10个URL
因此,基本上,前两个请求通过管道发送到一个文件,但由于某种原因,之后会挂起,并且永远不会命中drain函数 在调用回调之前,尝试收听
finish
而不是close
close
用于可读流,其中finish
用于可写流
on('finish',function(){
回调(“完成”);
})
有关更多详细信息,请参阅API文档: