0

这段代码有什么问题

var a=function()
{
   setInterval(function(){document.write("a");},1000);
}

function b(callback)
{
    callback();
    alert(2);
}

b(a); // alert 2

它不应该向我显示警报,因为通话还没有结束?

4

2 回答 2

1

代码按预期运行。SetInterval 不会保留在指定时间后触发分配函数的其余代码的执行。

所以你会得到警报,然后是 document.write。

于 2012-11-13T11:35:31.090 回答
1

您可以将回调添加到您的 setInterval 函数中,以便在 1000 毫秒延迟之后才执行它,例如:

    var a=function(callback) {
        setInterval(function(){document.write("a"); callback(); },1000);
    }

    function b() {
        alert(2);
    }

a(b); // alert 2 AFTER the 1000 millisecond delay
于 2012-11-13T11:39:03.810 回答