39 条回复  ·  780 次点击
DOLLOR 小成 2024-4-25 23:14:12
我觉得只有经历过 callback hell 时代,才能理解为什么会有 promise ,为什么会有 async/await 。
所以建议楼主先写一段时间 callback ,自然会慢慢理解了。
rioshikelong121 小成 2024-4-25 23:15:24
我曾经自认为搞的懂那么一点点过,,研究过 Task Queue, Micro Task Queue, 读过相关的 Spec, 看过各种相关的八股题目。读过 Promise/A+ 规范也照猫画虎实现过。
然而现在写了两年多的后端代码以后忘的差不多了。
非要我自己说,本质上 Promise 也好,Async/Await 也好,都只是下层提供的抽象,绝大部分情况下直接拿过来用可以满足大部分的场景的需要的。
花费大量精力搞懂这些的原因可能是:

1. 满足自己的好奇心
2. 通过理解一些偏底层的原理,在 1% 的场景下可以帮助你更快的定位 BUG / 问题从而解决问题,也就是为了解决抽象泄露才不得不去学习底层。
3. 可能也是最重要的:用来在面试的时候筛选人或者被我筛选。


现在让我来看的话,我自己可能对学这些知识兴趣不是那么大了,毕竟 AGI 都快实现了,学这些对于大部分的普通开发者来说性价比很低。
iqoo 小成 2024-4-25 23:28:48
完全有必要,代码可读性大幅提升
leokun 小成 2024-4-25 23:36:46
@favourstreet Promise 不是一个严格的 Monad ,不过挺像的
angrylid 小成 2024-4-25 23:48:09
不应付面试的话,JavaScript.info 真的足够应付业务开发的大多数问题了,遇到坑你再深入原理不迟。

赞成 17 楼所说。
RedNax 小成 2024-4-26 03:11:36
要深入研究也很简单,去 https://www.typescriptlang.org/play 写一点有 async/await 的 TS 代码,右边就有实时编译的 js 代码。
TS Config 的 Target 调整到 ES2016 (还没有 async/await ),就能看到 async/await 是怎么用 generator 实现的。
Target 调整到 ES5 (还没有 Generator ),就能看到 Generator 又是怎么用状态机实现的。
hukei 小成 2024-4-26 08:37:40
最近刚看 讲的最清楚 最简洁的教程视频 B 站虎哥  https://www.bilibili.com/video/BV1ig4y137Wr/
JavenXiao 小成 2024-4-26 08:41:29
做一些宏任务、微任务谁先打印出来的题,搞清楚 js 的事件循环
然后自己手搓一遍 Promise ,实现 Promise 的各种 api
然后努力理解一下 Generator 函数

最后组合起来,你就能理解 async/await 到底是个啥了
wjx0912 小成 2024-4-26 08:47:51
https://www.ituring.com.cn/book/3033
Moierby 初学 2024-4-26 08:55:52
精通了“茴”字的 4 种写法,也不影响大龄被裁员
返回顶部