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関数にコールバックを追加して、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 に答える
1

コードは期待どおりに実行されています。SetInterval は、指定された時間後に割り当てられた関数を起動する残りのコードの実行を保持しません。

したがって、アラートが表示されてから document.write が表示されます。

于 2012-11-13T11:35:31.090 に答える