Salam(意为你好:))
在我的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
后会被覆盖。我该如何解决这个问题?
答案 0 :(得分:3)
这样做:
function myFunc(){
console.log(i, this);
--i && setImmediate(myFunc.bind(this));
}
您可能已注意到,我已移除arguments.callee
:its use is deprecated and forbidden in strict mode。