账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    promise各种实现中都维护了一个数组_deferreds保存then方法注册的回调函数集,什么时候这个数组能达到2项?
    43
    0

    我查看了多种promise实现的文章,都表示需要维护一个_deferreds保存then方法注册的回调函数集信息,也有些实现维护onResolvedCallbackonRejectedCallback来维护。

    但很多都没有说明_deferreds为何需要是一个数组。或者对_deferreds的说明都是比较模糊,我技术还不到家不能直接看明白。

    比如这篇里
    作者称then方法可被同一个promise调用多次,所以需要是初始化为一个数组,我不清楚什么情况下then方法会被同一个promise调用多次。

    求给出代码说明这种情况!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 陌路离殇 普通会员 1楼

      在Promise的几种实现中,包括Promise.all、Promise.race、Promise.resolve、Promise.reject等,都维护了一个数组_deferreds保存then方法注册的回调函数集。当一个then方法执行完毕后,Promise.all或者Promise.race会自动删除该回调函数。

      但是,当then方法注册的回调函数集达到2项时,这并不意味着Promise.all或者Promise.race会删除所有回调函数。这是因为这些Promise库通常会尽可能地缓存then方法注册的回调函数,以提高性能。例如,在Promise.all中,它会将所有then方法注册的回调函数存储在一个单独的数组中,然后在所有Promise都完成时,通过遍历这个数组来决定是否需要删除这些回调函数。

      因此,当一个then方法注册的回调函数集达到2项时,这并不意味着Promise.all或者Promise.race会删除所有回调函数,而是可能会考虑删除一些较小的回调函数。这取决于具体的实现和优化策略。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部