V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ericgui
V2EX  ›  程序员

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

  •  
  •   ericgui · Nov 29, 2021 · 2222 views
    This topic created in 1609 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
        1
    murmur  
       Nov 29, 2021
    最关键的一点,不要手写自己的 promise 实现,不是给你准备了 polyfill 和浏览器版本么

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

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

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

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