由于我对Javascript没有太多经验,我对功能顺序感到困惑。
在下面的示例中,我希望在wait()完成后处理console.log()。
function wait() {
setTimeout(function () {
console.log("wait " + new Date().getTime());
}, 3000);
}
wait();
console.log("global " + new Date().getTime());
控制台显示这些值:
全球1499993535591等待1499993538592
为什么在第一个功能尚未完成之前处理第二个功能?
当我在函数内部填充数组并且需要在该函数之外对其执行某些操作时,这会导致一些问题,因为它仍然是空的。
答案 0 :(得分:0)
setTimeout是异步的,它在执行下一行之前不会等待,而是在你完成设置的延迟完成后执行代码。
答案 1 :(得分:0)
setTimeout是非阻止的 - 无论你做什么,不要只是"使用async:false",除非你希望用户体验只涉及"冻结"他们等待的时候。而是学习如何使用async patterns(链接信用SLaks)