请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

通过setTimeout将同步代码改成异步是不可取的

setTimeout(() => {
  resolve(result.resolve_executor_value);
},5)

我认为这种做法是不可取的,测试代码中异步任务的时延都是5ms,这只是一种巧合的设定;如果某一个then中的异步任务超过5ms,即在某一个事件循环中,上面代码的setTimeout被放入执行队列,而resolveInthen中的异步任务还没有到执行的时间,这样就会导致后面的then先于当前的then执行,这是不符合Promise执行逻辑的

正在回答 回答被采纳积分+3

1回答

keviny79 2021-12-07 20:00:23

这是个小问题,使用async ...await 轻松解决,增加这两个关键字后,就不会出现后面的setTimeout先执行了 参加截图//img1.sycdn.imooc.com//szimg/61af4cd309cb4d5d12760749.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 F_Gump #1
    async..await...可以这么做是没错,只是视频课里面讲到setTimeout可以实现效果是有前提条件的,并不是通用做法,这个最好还是跟同学们解释清楚比较好,避免误导
    回复 有任何疑惑可以回复我~ 2021-12-07 20:04:18
  • keviny79 回复 提问者 F_Gump #2
    好的谢谢你提及这个问题,我讲时忘了说这个问题了,到时我再补一个图文说明下, 你说的通用没问题,这个比常规写法更简洁,更好理解!
    回复 有任何疑惑可以回复我~ 2021-12-07 20:12:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信