39 条回复  ·  775 次点击
shizhibuyu2023 初学 2024-4-25 22:07:09
楼上的各位,阮一峰的 ES6 都不看的吗?
JS 的 async/await 明明是用 co 模块自动调用 Promise 的迭代器( generator 语法生成)的语法糖
网上各种带你手写的视频、文章,自己花一天时间看一遍不难吧
这些东西跟 Vue 的模板语法、React 的 JSX 语法一样,你不理解背后的原理也能写,但去了解背后的原理并不会花太多时间,又不是让你去手写编译器
rabbbit 小成 2024-4-25 22:18:37
追求极致的理解?看这个🐶
https://tc39.es/ecma262/#sec-async-function-definitions
orioleq 小成 2024-4-25 22:33:43
@kneo 身为前 1%的程序员,对中位数的程序员说找水找错地方了,听上去还真的不像“嘲讽”…就好像学霸觉得自己的学习经验没啥好分享的都是直觉潜意识,还总劝普娃别走学习这条路了。有些人一边劝经验丰富的程序员安心写代码别瞎寻思转行,一边劝经验没那么丰富的程序员早点转行,多少有点二极管思维吧?
NessajCN 小成 2024-4-25 22:51:31
这东西多写写就懂了。
编程的好多概念都是看的时候一头雾水,
写到需要用到这些个工具的时候立刻恍然大悟了。
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 又是怎么用状态机实现的。
返回顶部