ノードで2つの関数をコールバックするにはどうすればよいですか?
例えば:
request('http://...',[func1,func2])
そのためのモジュールはありますか?
ノードで2つの関数をコールバックするにはどうすればよいですか?
例えば:
request('http://...',[func1,func2])
そのためのモジュールはありますか?
2 つの関数の周りにラッパーを配置できず、そのラッパーをコールバックとして使用できない理由はありますか? 例えば:
function handleCallback(data)
{
func1(data);
func2(data);
}
request('http://...',handleCallback);
他の回答で述べたように、複数の関数を単一のコールバックにラップするのは簡単です。ただし、イベント エミッター パターンは、このようなケースの処理に適している場合があります。例は次のとおりです。
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);
リスナーはいくつでも追加できます。もちろん、これは、コールバックを登録する対象がイベント エミッタであることを前提としています。多くの場合、これは真実です。
そのための小さなモジュールを作成できます。
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]))