最近在研究怎么手写一个 Promise 的实现,看的是尚硅谷李超的那个视频,讲的其实挺好的,而且似乎李超的代码是逐步模拟 ES6 的官方 Promise 的行为,写一个自己的。收获很多,很感谢。
但我看网上自己手写 promise 的博客,似乎更多的是遵循 Promise/A+,所以跟着李超视频写出来的代码通过不了 Promise/A+的测试,一共 872 个测试用例,只能通过十几个。
而且 Promise/A+里没有 Promise.all 等 api ,并且 Promise/A+里还有 Promise.deferred 这个 api ,但似乎 es6 的 promise 已经把这个 api 去掉了
总之有没有最新的关于 promise 的官方规范?我感觉是不是 Promise/A+是不是有点落后了?
最关键的一点,如果手写自己的 promise 实现,怎样测试才能知道写的对不对?有官方测试用例吗?
1
murmur 2021-11-29 15:11:37 +08:00
最关键的一点,不要手写自己的 promise 实现,不是给你准备了 polyfill 和浏览器版本么
网上有那种声称可以过 800 用例的面试版实现 |
2
murmur 2021-11-29 15:13:04 +08:00
|
4
EPr2hh6LADQWqRVH 2021-11-29 15:32:07 +08:00
你为什么要手写一个 Promise 的实现?
如果你是给小众运行时写一个 c 层次的协程 Promise ,那大神我绝不拦你。 但如果就纯就为混个简历漂亮然后在 js 世界搞来搞去,那大可不必,正常人不会因为这个高看你的。 |
5
rioshikelong121 2021-11-29 15:34:13 +08:00
测试:promises-aplus-tests
|
6
ericgui OP @avastms 我其实也是趁机研究一下 promise 到底是什么回事,我其实一直不理解 promise 到底是什么,听完了李超的视频,再看一下 MDN ,才感觉理解一些。
|
7
ayase252 2021-11-29 21:42:42 +08:00
|
9
dingyaguang117 2021-11-30 09:13:09 +08:00 via iPhone
觉得楼主的钻研精神是需要鼓励的
|
10
lizhenda 2021-11-30 09:18:34 +08:00
蛮好的,很少人能刨根问底
|
11
q447643445 2021-11-30 09:31:32 +08:00
哈哈, 对培训机构的视频有了新的认识.
|
12
ericgui OP @q447643445 免费的还是可以看看,还不错,至少大轮廓是对的
|
13
libook 2021-11-30 12:28:51 +08:00
JavaScript 的官方规范就是 ECMA-262 ,你可以去看看标准文档,然后根据标准实现一个。
或者直接去看 V8 里 Promise 的源码。 |