如何在节点中添加两个函数作为回调?

时间:2014-02-05 19:22:36

标签: node.js node-async

如何在节点中回调两个函数?

例如:

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

是否有任何模块?

3 个答案:

答案 0 :(得分:3)

是否有一些原因你不能在两个函数周围放置一个包装器,然后使用包装器作为回调?例如:

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

request('http://...',handleCallback);

答案 1 :(得分: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);

您可以根据需要添加任意数量的侦听器。当然,这假设你希望你的回调注册的是一个事件发射器。很多时候这是真的。

答案 2 :(得分:-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]))