• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ericgui
V2EX  ›  程序员

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

  •  
  •   ericgui · Nov 29, 2021 · 2832 views
    This topic created in 1802 days ago, the information mentioned may be changed or developed.

    最近在研究怎么手写一个 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

    13 replies  •  2021-11-30 12:28:51 +08:00
    murmur
    murmur
    Nov 29, 2021
    1
    最关键的一点,不要手写自己的 promise 实现,不是给你准备了 polyfill 和浏览器版本么

    网上有那种声称可以过 800 用例的面试版实现
    murmur
    murmur
    Nov 29, 2021
    2
    ericgui
    ericgui
    OP
    Nov 29, 2021
    3
    @murmur 我在质疑 Promise/A+这个规范本身
    EPr2hh6LADQWqRVH
    EPr2hh6LADQWqRVH
    Nov 29, 2021
    4
    你为什么要手写一个 Promise 的实现?

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

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

    或者直接去看 V8 里 Promise 的源码。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1380 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 22:33 · PVG 06:33 · LAX 14:33 · JFK 17:33
    ♥ Do have faith in what you're doing.