【发布时间】:2021-09-24 17:39:43
【问题描述】:
我尝试在 Chrome 上运行以下代码,得到了意想不到的结果。
<script>
let p = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('OK');
}, 1000)
})
console.log(p);
</script>
Chrome 控制台上打印的 Promise 对象是 enter image description here。 (状态='完成',结果='OK)
但是在 VScode 控制台上打印的 Promise Object 是 enter image description here。 (状态='待定',结果=未定义)
根据我对 JS 事件循环的了解,由于 setTimeout() 是异步的,所以在同步代码完成之前不会执行代码 'resolve('OK')'。
所以我认为 VScode 结果是我应该期待的,对吧?但是是什么导致 Chrome 和 VScode 的结果不同呢?谢谢^^
【问题讨论】:
-
您是否要等到异步函数中的超时完成后再做某事?
-
Chromes 控制台未立即评估。单击它时会对其进行评估。所以你在解决后检查它。
标签: javascript asynchronous concurrency promise