说我有一个功能:
function foo(){
console.log(arguments);
}
process.nextTick(foo);
如何在process.nextTick()
调用中将参数应用于foo?
我该怎么做
//伪代码
var args = [];
process.nextTick(foo.addArgs(args));
......但是没有打电话给foo?
答案 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);
});