【问题标题】:Combine Promise.race with array of data as a parameters将 Promise.race 与数据数组结合作为参数
【发布时间】:2018-06-18 13:02:45
【问题描述】:

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

我想检查checkData promise 之一是否使用提供的数据参数获取成功数据。我不在乎哪一个成功了,我只想检查 dataSet 中的一个是否成功。

是否可以像下面这样在循环或映射函数中使用 Promise.race?

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

我想这样的事情可以做到,如果我将一组承诺传递给比赛方法,它可以工作,但我想这样做而不粘贴 10 次(有时更多)返回承诺的函数。

非常感谢您的帮助。

【问题讨论】:

  • 不确定这是否只是一个错字,但您需要在回调中返回承诺。
  • 没错。 :) 我忘了回报承诺。

标签: javascript ecmascript-6 es6-promise


【解决方案1】:

Map 函数返回新数组。您必须在 map 函数中返回元素。如果 checkData 返回承诺你必须在 map 函数中返回它

那么你应该有这个:

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

【讨论】:

  • 或者你可以删除{},这会给你隐式返回。
猜你喜欢
  • 2012-05-23
  • 2019-01-20
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多