是否可以使用setTimeout Node.js调用自定义函数

时间:2016-07-22 20:46:00

标签: javascript node.js

我想停止执行我的代码2秒,以便所有正在进行的动画都可以完成。我试图在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秒,但功能没有得到这个。可能,在这种情况下它是未定义的。

1 个答案:

答案 0 :(得分:1)

排序。您没有看到执行停止2秒,因为您实际上正在doTheMagicIfPossible来电中呼叫setTimeout

如果要将参数传递给传递给setTimeout的回调,则需要传入一个不带参数的函数,该函数为回调提供正确的参数。 Javascript在Function的原型中提供了bind功能,例如:

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

在这里,bind创建一个新函数,不带任何参数,调用时会调用doTheMagicIfPossible并将this设置为相同thisthis.scoringPossible }作为第一个参数。