我为您制作了一个jsfiddle:

http://jsfiddle.net/fyJP2/

这是代码:

var chat = {

    init: function(){
        setTimeout( comet , 10);
    }
};

function comet()
{
    alert('called');
}

$(document).ready(function(){
  chat.init();
});


如您所见,会立即调用comet(),而完全忽略10秒的延迟,为什么呢?我传递的是Comet,而不是setTimeout要求的comet(),但是该函数仍在执行。
我原本以为这是一个范围问题,所以我将彗星移到它自己的功能上,但是这样做:http://jsfiddle.net/fyJP2/1/结果是相同的。

有人可以解释我为什么吗?

最佳答案

如前所述,传递给window.setTimeout的第二个参数以毫秒为单位。
因此,您的代码应为:

init: function(){
    setTimeout( comet , 10000);
}


假设您的意思是十秒钟。

在此处阅读更多信息:https://developer.mozilla.org/en/docs/Web/API/window.setTimeout

关于javascript - 在对象内部调用超时,函数立即被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21108621/

10-11 05:42