node.js-我如何知道所有(递归)“;http.request";结束?
一切都是异步的。完成后,Http.request将获得函数回调。 问题是调用http.request的函数正在根据http请求的结果以递归和非确定性方式调用 我如何知道在这个异步世界中我什么时候真正完成了? 只需保留为“任务已启动vs.任务已完成”计数器? 有没有更优雅的方法?该模块有许多有用的实用程序来组织异步任务 例如,如果您有一个要获取的URL数组:node.js-我如何知道所有(递归)“;http.request";结束?,node.js,Node.js,一切都是异步的。完成后,Http.request将获得函数回调。 问题是调用http.request的函数正在根据http请求的结果以递归和非确定性方式调用 我如何知道在这个异步世界中我什么时候真正完成了? 只需保留为“任务已启动vs.任务已完成”计数器? 有没有更优雅的方法?该模块有许多有用的实用程序来组织异步任务 例如,如果您有一个要获取的URL数组: var http = require('http'); var async = require('async'); var urls =
var http = require('http');
var async = require('async');
var urls = ['http://google.com', 'http://nodejs.org', 'http://stackoverflow.com'];
async.map(urls, function(url, cb) {
http.get(url, function(res) {
var buf = '';
res.on('data', function(d) {
buf += d;
}).on('end', function() {
cb(null, buf);
});
});
}, function(err, responses) {
// responses is an array containing response bodies of a GET to each url:
// responses[0] = response for google.com
// responses[1] = response for nodejs.org
// ...
});
这是一个好问题,目前有一个更好的解决方案: 创建一个promise并使用promise.all,如果希望100%异步,请使用promise resolve使用下一个参数再次调用该函数 通过这种方式,可以100%确定,一旦最后一个承诺实现,所有其他承诺都实现了
我建议async.queue具有受控的并发处理级别您应该使用承诺。这与我的情况如何对应?我不知道我需要什么样的男人。我做的“GET”越多,我可能需要的“GET”就越多,这取决于主体内容的含义,递归地、非确定性地<代码>异步非常灵活。。。