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

来源:12-13 构建多异步+级联 then 【 第一种实现方式 首创精简写法】2

F_Gump

2021-12-07

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

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

写回答

1回答

keviny79

2021-12-07

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

0
2
keviny79
回复
F_Gump
好的谢谢你提及这个问题,我讲时忘了说这个问题了,到时我再补一个图文说明下, 你说的通用没问题,这个比常规写法更简洁,更好理解!
2021-12-07
共2条回复

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程