0

我尝试执行一些超时功能,这是来自类的代码:

while($$('.visos_prekes ul li.simple').length > 0){
    setTimeout(this.destroyByOne(), 5000);
}

destroyByOne: function(){
    $$('.visos_prekes ul li.simple').each(function(e, key){
        e.destroy();
        if(key > 16){
            return true;
        }
    });
},

但是这个函数执行没有超时。我做错了什么?

4

2 回答 2

2

这一行setTimeout(this.destroyByOne(), 5000);应该是:

setTimeout(this.destroyByOne, 5000);

因为您需要将函数处理程序也称为变量......而不是函数调用的结果(this.destroyByOne())传递给它。

于 2013-03-29T08:06:22.387 回答
1

这是setTimeout函数的正确语法:

var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);
var timeoutID = window.setTimeout(code, delay);

其中func是要在延迟毫秒后执行的函数(函数的名称),而 code在替代语法中,是要在延迟毫秒后执行的代码字符串!

您可以在以下任一情况下使用 setTimeout:

setTimeout(this.destroyByOne, 5000);
setTimeout("this.destroyByOne()", 5000);
于 2013-03-29T08:14:21.953 回答