向事件发射器侦听器发送任意数量的参数

时间:2014-07-13 20:50:02

标签: javascript node.js

所以我试图创建一个接受参数的函数,将其转换为数组,然后从数组中选择第一个元素作为事件,然后将其余元素作为参数传递。

示例:

// _ is the underscore module
// emitter = new events.EventEmitter()
function sendToEmitter = function(){
    var args  = _.toArray(arguments),
        event = args[0],
        rest  = args.slice(1);
    emitter.emit(event, rest) 

我不确定如何将rest作为单独的参数传递给侦听器函数。

在python中我可以简单地将它变成一个元组并用*打包。我不确定JavaScript是否有类似的东西。有没有办法实现这个目标?我相信.apply(也许.call?)会起作用,但我不确定如何将参数应用于监听器。

1 个答案:

答案 0 :(得分:1)

基本上,您要做的是将一个数组作为多个参数传递给函数。

您可以使用.apply(thisArg, [argsArray])

var args  = _.toArray(arguments),
emitter.emit.apply(emitter, args);