在调用该函数之前向函数添加参数 - node.js

时间:2015-05-18 21:10:35

标签: javascript node.js

说我有一个功能:

function foo(){
console.log(arguments);
}

process.nextTick(foo);

如何在process.nextTick()调用中将参数应用于foo?

我该怎么做

//伪代码

var args = [];
process.nextTick(foo.addArgs(args));

......但是没有打电话给foo?

2 个答案:

答案 0 :(得分:3)

有几种可能性。对于前几个选项,我(可能错误地)假设您不介意将args作为单个数组参数传递。如果您希望args的每个元素都是foo()的单独参数,请参阅最后一个示例(使用apply())。

假设您未在this内使用foo(),可以选择以下选项:

process.nextTick(function () { 
  foo(args); 
});

或者:

var bar = foo.bind(null, args);
process.nextTick(bar);

如果您在this内使用foo(),请将上例中的null更改为您希望this拥有的值。例如:

var bar = foo.bind(foo, args);
process.nextTick(bar);

您可能还希望查看call()apply()。如果您希望在函数args中分布一个数组(例如,apply()),则[1, 2, 7]特别有用(也就是说,foo(1, 2, 7)代替foo([1, 2, 7]) }):

process.nextTick(function () {
    foo.apply(null, args);
}

bind()一样,如果您在this内使用foo,请将上例中的null更改为您期望的值this拥有。

答案 1 :(得分:2)

您可以使用匿名函数执行此操作:

var args = [];
process.nextTick(function(){
   foo.apply(foo, args);
});