promise - Promise.race() 可能不适合获得最快的答案?
问题描述
例如,如果我们尝试从 3 个服务器获取答案,其中一些服务器速度更快,但可能负载很重:
let p1 = fetch("http://some-server1.com/isTwoToPowerNMinusOnePrime?n=82589933"),
p2 = fetch("http://some-server2.com/isTwoToPowerNMinusOnePrime?n=82589933"),
p3 = fetch("http://some-server3.com/isTwoToPowerNMinusOnePrime?n=82589933");
Promise.race([p1, p2, p3])
.then(console.log);
那么这不起作用,因为如果第一个要结算的承诺被拒绝(即使由于网络错误),那么整个承诺都会被拒绝。这可能类似于一场赛马,如果一匹马不小心摔倒了,那么整个比赛将被取消。
解决方案
推荐阅读
- sql - SQL-group by 找出一个值是否只跟随某些其他值
- java - Drools Fusion 规则的滑动窗口
- angular - Ionic 3 打开外部 URL,其中 URL 由数组设置
- javascript - Javascript - 创建键被双引号包围的对象
- javascript - 如果再次单击模式,则将 AJAX 从插入修改为更新
- sql - 所有发货产品的 SQL Server 查询结果
- python - 如何在 Python Pandas 中将日期转换为季度而不重复前 5 年的季度?
- apache-kafka - 如果整个集群出现故障,Kafka 中的消费者组会发生什么?
- c++ - 安全回调提供程序(SFINAE、std::forward 和重载解析)
- swift - 引用类型协议到 AnyObject 类型的通用约束