2016-07-22 65 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

相关问题