一切都是異步的。 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