2016-07-22 112 views
-1

我想停止執行我的代碼2秒,以便所有正在進行的動畫都可以完成。我想打電話給使用的setTimeout的函數的Node.js是否有可能通過setTimeout調用自定義函數Node.js

我在我的代碼正在做的:

this.userActivity = function(a,b,side){ 
    //some code of mine 
    setTimeout(this.doTheMagicIfPossible(this.scoringPossible),2000); 
} 

this. doTheMagicIfPossible = function(passedValue){ 
    console.log("printing it out after 2 seconds"+passedValue); 
} 

但是,執行是沒有得到停止2秒鐘。

如果我這樣做:

setTimeout(this.doTheMagicIfPossible,2000,this.scoringPossible); 

執行是越來越減少2秒停止,但功能沒有得到this.scoringPossible,它未定義在這種情況下。

回答

1

排序您沒有看到執行停止2秒鐘,因爲您實際上是在呼叫setTimeout呼叫中呼叫doTheMagicIfPossible

如果要將參數傳遞給傳遞給setTimeout的回調函數,則需要傳入一個不帶任何參數的函數,以便爲回調提供正確的參數。 JavaScript提供功能bindFunction的原型做只是這一點,例如:

setTimeout(this.doTheMagicIfPossible.bind(this, this.scoringPossible),2000); 

這裏,bind創建一個新的功能,沒有參數,當其被稱爲將調用doTheMagicIfPossiblethis設置爲同一個thisthis.scoringPossible作爲第一個參數。

+0

少用魔法:'var me = this; setTimeout(function(){me.doTheMagicIfPossible(me.scoringPossible)},2000);''在哪裏'me'用於在稍後引用'this',它可能已經改變。 – Phrogz

相關問題