关于 JavaScript Promise/A+规范,这个规范似乎落后了? JavaScript 有没有对 promise 的官方规范?

2021-11-29 15:04:29 +08:00
 ericgui

最近在研究怎么手写一个 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 实现,怎样测试才能知道写的对不对?有官方测试用例吗?

目前只能查到这个: https://tc39.es/ecma262/#sec-promise-objects

1730 次点击
所在节点    程序员
13 条回复
murmur
2021-11-29 15:11:37 +08:00
最关键的一点,不要手写自己的 promise 实现,不是给你准备了 polyfill 和浏览器版本么

网上有那种声称可以过 800 用例的面试版实现
murmur
2021-11-29 15:13:04 +08:00
ericgui
2021-11-29 15:28:59 +08:00
@murmur 我在质疑 Promise/A+这个规范本身
EPr2hh6LADQWqRVH
2021-11-29 15:32:07 +08:00
你为什么要手写一个 Promise 的实现?

如果你是给小众运行时写一个 c 层次的协程 Promise ,那大神我绝不拦你。

但如果就纯就为混个简历漂亮然后在 js 世界搞来搞去,那大可不必,正常人不会因为这个高看你的。
rioshikelong121
2021-11-29 15:34:13 +08:00
测试:promises-aplus-tests
ericgui
2021-11-29 16:05:53 +08:00
@avastms 我其实也是趁机研究一下 promise 到底是什么回事,我其实一直不理解 promise 到底是什么,听完了李超的视频,再看一下 MDN ,才感觉理解一些。
ayase252
2021-11-29 21:42:42 +08:00
ericgui
2021-11-30 01:13:42 +08:00
@ayase252 非常感谢
dingyaguang117
2021-11-30 09:13:09 +08:00
觉得楼主的钻研精神是需要鼓励的
lizhenda
2021-11-30 09:18:34 +08:00
蛮好的,很少人能刨根问底
q447643445
2021-11-30 09:31:32 +08:00
哈哈, 对培训机构的视频有了新的认识.
ericgui
2021-11-30 10:23:43 +08:00
@q447643445 免费的还是可以看看,还不错,至少大轮廓是对的
libook
2021-11-30 12:28:51 +08:00
JavaScript 的官方规范就是 ECMA-262 ,你可以去看看标准文档,然后根据标准实现一个。

或者直接去看 V8 里 Promise 的源码。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/818757

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX