說我有一個功能:添加參數的函數調用該函數之前 - Node.js的
function foo(){
console.log(arguments);
}
process.nextTick(foo);
如何申請論點在process.nextTick()
調用foo的?
我怎麼做這樣的事情
//僞代碼
var args = [];
process.nextTick(foo.addArgs(args));
...但沒有調用foo?
說我有一個功能:添加參數的函數調用該函數之前 - Node.js的
function foo(){
console.log(arguments);
}
process.nextTick(foo);
如何申請論點在process.nextTick()
調用foo的?
我怎麼做這樣的事情
//僞代碼
var args = [];
process.nextTick(foo.addArgs(args));
...但沒有調用foo?
有幾種可能性。對於前幾個選項,我(可能錯誤地)假設你不介意將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()
。如果你想擁有你想要在整個函數參數攤開陣列(比如,[1, 2, 7]
)apply()
是特別有用的(即中,foo(1, 2, 7)
代替foo([1, 2, 7])
):
process.nextTick(function() {
foo.apply(null, args);
}
與bind()
,如果你在foo
內部使用this
,然後在上面的示例中將null
更改爲您期望this
具有的值。
這似乎相當合法 –
你可以做到這一點的匿名函數:
var args = [];
process.nextTick(function(){
foo.apply(foo, args);
});
這是最直接的解決方案,但我想知道其他方法它也是 –
w/Array:'Function.apply.bind(foo,null,['arg1','arg2','arg3'])' – dandavis