我正在尝试通过异步模块构建一个简单的节点瀑布。 我刚开始在节点中进行异步编程。
基本上 - 如何在callback()
函数内调用http.request
以在response
结束后继续瀑布?
async.waterfall([
function (callback) {
var req = http.request(options, function (response) {
var str = ''
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
/* I want to call callback() AFTER `response` is END */
});
});
req.end();
},
function (response, callback) {
// some operations WITH request `output`
}], function (err, results) {
// end
});
答案 0 :(得分:0)
在JavaScript嵌套函数中查看所有父变量。它被称为封闭。
这就是为什么你可以直接在结束事件监听器中调用你的回调:
async.waterfall([
function (callback) {
var req = http.request(options, function (response) {
var str = ''
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
/* I want to call callback() AFTER `response` is END */
callback(null, str);
});
});
req.end();
},
function (response, callback) {
// some operations WITH request `output`
}
], function (err, results) {
// end
});