2013-12-09 34 views
0

在一個JS對象的方法中,我希望在一段固定的時間後調用另一個對象的方法(updateState)。下面是我目前的工作:如何在保持當前上下文的同時設置Timeout?

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

由於當前背景下是必要的,我試圖通過與.CALL功能,通過它,但是這似乎打破的setTimeout(我認爲這是一個函數不再處理?)。

是否有另一種方法來實現這一目標?

(我在Node.js的工作,如果有差別)

方法的 Function原型

回答

3

使用bind

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

是不是OP解釋他不能訪問'updateState'函數? – Phil

+0

請注意,對於['Function.prototype.bind'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)的完全IE支持直到IE9纔出現。 – ajp15243

+0

謝謝,這個作品很棒 – user1618840

3

這是普遍的舊的瀏覽器(不支持綁定( );):

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

你應該瞭解一些瓶蓋在JS

+0

+1關閉注意事項。好東西。 –

+0

謝謝,可能是一個很好的觀點 – user1618840

相關問題