【发布时间】:2021-04-14 16:23:12
【问题描述】:
我有以下代码:
Promise
.resolve('333')
.then(()=>{setTimeout(()=>{Promise.resolve('123');},10000)})
.then(()=>{console.log("should wait");});
我认为输出应该首先是“123”,然后是“应该等待”。由于不明原因,首先打印了“应该等待”。我认为直到异步函数(setTimeout)没有完成,第二个才会开始。我读到这就是使用Promise 和then 的全部“魔法”。现在我很困惑。为什么例如当我们调用 fetch 函数时它不会发生? fetch 函数也是异步的,那么为什么 fetch 结束之前 fetch 之后的 then 没有开始呢?
【问题讨论】:
-
你的承诺链不会等待超时。
标签: javascript asynchronous promise fetch