0

我正在尝试通过异步模块构建一个简单的节点瀑布。我刚刚开始在节点中进行异步编程。

基本上 - 如何调用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
        });
4

1 回答 1

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
}); 
于 2014-08-05T14:22:55.080 回答