如何在保持当前上下文的同时设置Timeout?

时间:2013-12-09 14:13:32

标签: javascript node.js

在JS对象的方法中,我希望在一段固定的时间后调用另一个对象的方法(updateState)。以下是我目前的努力:

setTimeout((function() {
    this.updateState("closed")
}).call(this), cycleOpenTime);

由于当前上下文是必要的,我试图通过.call函数传递它,但这似乎打破了setTimeout(我认为它不再被视为函数?)。

还有另一种方法可以达到这个目的吗?

(如果有所不同,我在Node.js工作)

2 个答案:

答案 0 :(得分:3)

使用Function原型的bind方法:

setTimeout((function() {this.updateState("closed")}).bind(this), cycleOpenTime);

答案 1 :(得分:3)

这对旧浏览器来说是通用的(不支持bind();):

var me = this;
setTimeout(function() {
    me.updateState("closed");
}, cycleOpenTime);

您应该了解一些关于 JS中的闭包的内容。