在JS对象的方法中,我希望在一段固定的时间后调用另一个对象的方法(updateState)。以下是我目前的努力:
setTimeout((function() {
this.updateState("closed")
}).call(this), cycleOpenTime);
由于当前上下文是必要的,我试图通过.call函数传递它,但这似乎打破了setTimeout(我认为它不再被视为函数?)。
还有另一种方法可以达到这个目的吗?
(如果有所不同,我在Node.js工作)
答案 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中的闭包的内容。