实现发起多个请求:取其中返回最快的数据
背景:npm获取包信息,获取源:私服1,私服2,官方npm源
目的:向npm源获取到包信息
要求:向所有npm源发送请求,只要有包信息返回,就使用那条
实现方法:
通过百度,发现了Promise有个新的方法:Promise.any()
Promise.any() 接收一个Promise可迭代对象,只要其中的一个 promise 成功,就返回那个已经成功的 promise
。如果可迭代对象中没有一个 promise 成功(即所有的 promises 都失败/拒绝),就返回一个失败的 promise
和AggregateError类型的实例,它是 Error
的一个子类,用于把单一的错误集合在一起。本质上,这个方法和Promise.all()是相反的
这不是刚好就是我要的结果吗!可是生活就是处处是磨难
注意! Promise.any() 方法依然是实验性的,尚未被所有的浏览器完全支持。它当前处于 TC39 第四阶段草案(Stage 4)
然后疯狂百度,疯狂尝试安装插件,试图让项目可以兼容到这个方法,始终报错"promise.any is not a function"
无奈只能另想他法了:一顿www.baidu.com下,发现了一位老兄提供了一个非常神奇的操作,改造promise.all
首先我们先了解下promise.all()