2016-07-22 8 views
-1

実行中のすべてのアニメーションが終了するように、コードの実行を2秒間停止します。私は私のコードでやっているものを setTimeout Node.jsでカスタム関数を呼び出すことは可能ですか?

のNode.js

でのsetTimeoutを使用して関数を呼び出すしようとしています:

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

並べ替えsetTimeoutコールの中から実際にdoTheMagicIfPossibleを呼び出しているため、実行が2秒間停止することはありません。

setTimeoutに渡されるコールバックにパラメータを渡す場合は、コールバックに正しい引数を提供する引数を指定しない関数を渡す必要があります。同じthisthisセットでdoTheMagicIfPossibleを呼び出すと呼ばれる引数を、取っていない、ここで

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

は、bindは新しい関数を作成します。Javascriptが例えば、単にこれを行うにFunctionのプロトタイプで機能bindを提供します、および第1引数​​としてthis.scoringPossible

+0

少ない魔法で: 'var me = this; settimeout(function(){me.doTheMagicIfPossible(me.scoringPossible)}、2000); '' me'は後で 'this'を参照するために使用されます。 – Phrogz

関連する問題