将Promise.race与数据数组结合起来作为参数

时间:2018-06-18 13:02:46

标签: javascript ecmascript-6 es6-promise

我有一个包含10多个数据对象的数组。

我想检查一个checkData承诺是否使用提供的数据参数获取成功数据。我不关心哪一个是成功的,我只想检查一下dataSet是否成功。

是否可以在循环或地图功能中使用Promise.race,如下所示?

return Promise.race(
    dataSet.map(item => {
        checkData(item) // checkData return a Promise
    })
)
.then(...)
.catch(...)

我想这样的事情可以完成,如果我将promises数组传递给race方法,它可以工作,但是我想这样做而不会粘贴10次(有时候更多)返回promise的函数。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

Map函数返回新数组。您必须在map函数中返回元素。如果checkData返回promises,你就可以在map函数中返回它

然后你应该有这个:

return Promise.race(
dataSet.map(item => {
    return checkData(item) // checkData return a Promise
}));