我对setTimeout有点困惑,我想确认以下代码的输出是否始终是:

inside abc
inside sample


代码:

function abc() {
    xyz();

    // interactions and modifications in DOM
    $("#id1").append("something");
    $("#id2").val("set something");
    $("#id3").after("create some dynamic element");
    // 10 to 20 interaction more...

    console.log('inside abc');
}

function xyz() {
    setTimeout(function() {
        sample();
    },0);
}

function sample() {
    console.log('inside sample')
}


如果有人可以用调用堆栈解释整个流程,那就太好了。

最佳答案

在完成当前执行块之后,setTimeout()将异步运行。因此输出应始终相同:

inside abc
inside sample


Javascript内部管理所有异步任务的事件队列。在完成当前执行块之后,每次检查其异步队列。

10-04 21:47
查看更多