-1

ノードで2つの関数をコールバックするにはどうすればよいですか?

例えば:

request('http://...',[func1,func2])

そのためのモジュールはありますか?

4

3 に答える 3

3

2 つの関数の周りにラッパーを配置できず、そのラッパーをコールバックとして使用できない理由はありますか? 例えば:

function handleCallback(data)
{
    func1(data);
    func2(data);
}

request('http://...',handleCallback);
于 2014-02-05T19:33:32.790 に答える
1

他の回答で述べたように、複数の関数を単一のコールバックにラップするのは簡単です。ただし、イベント エミッター パターンは、このようなケースの処理に適している場合があります。例は次のとおりです。

var http = require('http');
var req = http.request({ method: 'GET', host:... });

req.on('error', function (err) {
    // Make sure you handle error events of event emitters. If you don't an error
    // will throw an uncaught exception!
});

req.once('response', func1);
req.once('response', func2);

リスナーはいくつでも追加できます。もちろん、これは、コールバックを登録する対象がイベント エミッタであることを前提としています。多くの場合、これは真実です。

于 2014-02-06T01:15:29.433 に答える
-1

そのための小さなモジュールを作成できます。

jj.js ファイル:

module.exports.series = function(tasks) {
    return function(arg) {
        console.log(tasks.length, 'le')
        require('async').eachSeries(tasks, function(task, next) {
            task.call(arg)
            next();
        })
    }
}

使用例:

var ff = require('./ff.js')

    function t(callback) {
        callback('callback')
    }

    function a(b) {
        console.log('a', b)
    }

    function b(b) {
        console.log('b', b)
    }


t(ff.series([a, b]))
于 2014-02-05T19:22:35.930 に答える