- 43
- 0
我查看了多种promise实现的文章,都表示需要维护一个_deferreds保存then方法注册的回调函数集信息,也有些实现维护onResolvedCallback和onRejectedCallback来维护。
但很多都没有说明_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会删除所有回调函数,而是可能会考虑删除一些较小的回调函数。这取决于具体的实现和优化策略。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
