假设我有一个函数:
function foo(){
console.log(arguments);
}
process.nextTick(foo);
如何在 process.nextTick()
调用中将参数应用于 foo?
我该怎么做
//伪代码
var args = [];
process.nextTick(foo.addArgs(args));
...但不调用 foo?
最佳答案
有几种可能性。对于前几个选项,我(可能是错误的)假设您不介意将 args
作为单个数组参数传递。如果您希望 args
的每个元素成为 foo()
的单独参数,请参阅最后一个示例(使用 apply()
)。
假设您不在 foo()
内部使用 this
,以下是一些选项:
process.nextTick(function () {
foo(args);
});
或者:
var bar = foo.bind(null, args);
process.nextTick(bar);
如果您在 foo()
内部使用 this
,请将上例中的 null
更改为您期望 this
具有的值。例如:
var bar = foo.bind(foo, args);
process.nextTick(bar);
您可能还希望查看call()
和 apply()
。如果您想要一个数组(例如,[1, 2, 7]
)并希望分布在函数参数中(也就是说,foo(1, 2, 7)
而不是 foo([1, 2, 7])
),apply()
特别有用:
process.nextTick(function () {
foo.apply(null, args);
}
与 bind()
一样,如果您在 foo
内部使用 this
,则将上面示例中的 null
更改为您期望 this
具有的值。
关于javascript - 在调用函数之前向函数添加参数 - node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30312879/