用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 : 它的使用在严格模式下被弃用和禁止 。