0

非同期モジュールを介して単純なノード ウォーターフォールを構築しようとしています。ノードで非同期プログラミングを始めたばかりです。

基本的に -callback()内部http.request関数を呼び出してウォーターフォール AFTER responseIS END を続行する方法は?

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 に答える