如何在另一个函数内调用回调

时间:2014-08-05 14:09:34

标签: javascript node.js asynchronous waterfall

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

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

1 个答案:

答案 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
});