使用递归setImmediate()保留`this`

时间:2015-06-13 08:31:17

标签: javascript node.js

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后会被覆盖。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

这样做:

function myFunc(){
    console.log(i, this);
    --i && setImmediate(myFunc.bind(this));
}

您可能已注意到,我已移除arguments.calleeits use is deprecated and forbidden in strict mode