V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ericgui
V2EX  ›  程序员

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

  •  
  •   ericgui · 2021-11-29 15:04:29 +08:00 · 1730 次点击
    这是一个创建于 1119 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在研究怎么手写一个 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 条回复    2021-11-30 12:28:51 +08:00
    murmur
        1
    murmur  
       2021-11-29 15:11:37 +08:00
    最关键的一点,不要手写自己的 promise 实现,不是给你准备了 polyfill 和浏览器版本么

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

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

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

    或者直接去看 V8 里 Promise 的源码。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1086 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:30 · PVG 07:30 · LAX 15:30 · JFK 18:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.