用recursionsetImmediate()保留`this`
萨拉姆(手段你好:))
在我的node.js应用程序中,我需要使用setImmediate()
地调用一个函数,并保持其上下文完整,以便下次执行。
考虑下面的例子:
var i=3; function myFunc(){ console.log(i, this); --i && setImmediate(arguments.callee); } myFunc();
输出:
3 // a regular `this` object 2 { _idleNext: null, _idlePrev: null, _onImmediate: [Function: myFunc] } 1 { _idleNext: null, _idlePrev: null, _onImmediate: [Function: myFunc] }
正如你所看到的,第一次执行之后, this
被覆盖。 我应该如何解决这个问题?
做这个:
function myFunc(){ console.log(i, this); --i && setImmediate(myFunc.bind(this)); }
你可能会注意到,我删除了arguments.callee
: 它的使用在严格模式下被弃用和禁止 。