我对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内部管理所有异步任务的事件队列。在完成当前执行块之后,每次检查其异步队列。