一切都是异步的。 Http.request在完成时正在获取函数回调。 问题是调用http.request的函数是基于http请求的结果递归调用并非确定性的。node.js - 我如何知道所有(递归)“http.request”结束?
我怎么知道我真的在这个异步世界中完成了什么? 只是保持“任务开始与任务完成”计数器? 有没有更优雅的方式?
一切都是异步的。 Http.request在完成时正在获取函数回调。 问题是调用http.request的函数是基于http请求的结果递归调用并非确定性的。node.js - 我如何知道所有(递归)“http.request”结束?
我怎么知道我真的在这个异步世界中完成了什么? 只是保持“任务开始与任务完成”计数器? 有没有更优雅的方式?
async
模块有许多用于组织异步任务的有用工具。
例如,如果你有网址的数组,你想得到:
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
// ...
});
您应该使用的承诺。 – SLaks 2014-10-08 00:30:04