2013-01-10 57 views
2

我想在骨幹模型中使用setTimeout()。接下來的代碼工作: setTimeout(this.ajaxRequest,4000) 但不是下一個: setTimeout(function(){ this.ajaxRequest; },4000);函數在setTimeout()與Backbone.js

無論使用_.bind(this.ajaxRequest, this);(Underscore.js)或

timeoutFunction: function(){ this.ajaxRequest; },setTimeout(this.timeoutFunction,4000);

當Ajax響應完成setTimeout函數被調用(success:)和_.bindAll(this);執行於

+0

我們能獲得更大的代碼片段,而不是沒有上下文一堆小片段的? – Lukas

回答

4

您不在setTimeout(function)調用中調用函數。首先,你傳遞一個setTimeout調用的函數的引用,第二個實例傳遞一個函數,該函數什麼都不做(沒有實質性的)。這個功能需要調用的函數this.ajaxRequest()

var _this = this; 
setTimeout(function(){ _this.ajaxRequest(); },4000); 
+0

你是對的。 'this.ajaxRequest();'在'timeoutFunction'中工作,但不在'setTimeout'中調用 – vicenrele

+0

好的調用,是的,這是無效的,我正在更新我的代碼。 – jeremy

+1

由於存在['window.self'](https://developer.mozilla.org/en-US/docs/DOM/window),我建議不要使用'self'作爲這類事物的名稱.self),如果你忘記了'var self = this;'那麼你會在幾個小時之內撓頭,不知道WTF正在發生(是的,我必須以艱難的方式學習)。我一直在使用'var _this = this;'。 –