首页 > 解决方案 > 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);

那么这不起作用,因为如果第一个要结算的承诺被拒绝(即使由于网络错误),那么整个承诺都会被拒绝。这可能类似于一场赛马,如果一匹马不小心摔倒了,那么整个比赛将被取消。

标签: promisees6-promise

解决方案


推荐阅读