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

How to setTimeout while keeping current context?

本文关键字:设置 Timeout 上下文 保留      更新时间:2024-05-08

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

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

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

有其他方法可以实现这一点吗?

(如果有区别的话,我在Node.js中工作)

使用Function原型的绑定方法:

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

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

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

您应该了解JS中的闭包