关于await和Promise
javascript吧
全部回复
仅看楼主
level 1
LIghhTerS 楼主
小白求解,为什么setTimeout里要调用resolve?(如果注释掉,只输出01,后面的32不会输出了)。gpt给出的解释看不懂[泪]。我的疑惑:代码定义一个匿名的resolve函数当作参数传给Promise,resolve函数里面调用setTimeout,为什么还要调用自己?
2023年12月07日 14点12分 1
level 6
reslove是内部自带的参数啊。
2023年12月07日 15点12分 2
[真棒]谢谢
2023年12月08日 03点12分
level 6
创建Promise时,传递一个【函数】作为参数。【函数】的参数也是函数,resolve是这个【函数】的其中一个形参。
楼主是把传给Promise的函数当成resolve函数了,后面就乱了。
resolve函数自始自终只在定时器里调用过一次。调用resolve后,Promise会从『待定』状态变成『完成』状态
await会等待Promise的执行结果,有结果后才会执行后面的代码,如果Promise没有resolve,就一直等,后面的代码就被阻塞了。
2023年12月07日 18点12分 3
理解了,谢谢[真棒]
2023年12月08日 03点12分
level 1
await相当于promise.then()。你必须要resolve或者reject更新promise的状态才能执行promise.then()里的回调,而await定义的回调就是这个promise下面的函数,所以你不给这个promise更新状态,下面的写的东西是不会执行的。
2023年12月08日 05点12分 5
1