如何在我的情况下创建一个setTimeout?

时间:2014-02-10 23:38:00

标签: javascript jquery

我想为我的应用实现超时功能。

我的setTimsout代码似乎不起作用。它会立即在我的控制台中输出'call here,而不是等待3秒钟。

任何人都可以给我一个提示,说明为什么会这样吗?谢谢!

main.prototype.init = function(){
     var instance = this;
     $('.test').each(function(){
               //codes…..
                  window.setTimeout(instance.playAnimation(this), 3000)                    
      });
}

main.prototype.play = function(item){
     console.log('call here')
}

3 个答案:

答案 0 :(得分:2)

这是因为您没有将函数传递给setTimeout,而是执行playAnimation的结果。试试这个:

var _this = this;
setTimeout(function() {
    instance.playAnimation(_this);
}, 3000);

请注意,我保存了this的值,因为this函数中的setTimeout将引用window,而不是.test元素。

答案 1 :(得分:1)

window.setTimeout(function(){instance.playAnimation(this);}, 3000)

答案 2 :(得分:1)

你必须将函数传递给setTimeout,试试这个

的setTimeout(函数(){instance.playAnimation(本)},3000);