Promise.All 承诺参数

Promise.All promise parameters

我有两个承诺,每个承诺都返回一个字符串数组。我 运行 它们与 Promise.all(p1, p2) 但令我惊讶的是它解析到的值参数是一个 12k 字符串数组(这将是两个承诺之一 returns)。

const p1 = ModelA.find()
  .then((bandProfiles) => {
    const bandProfilePlayerTags = []
    // [...] Filling this array with strings
    return bandProfilePlayerTags
  })

const p2 = ModelB.find()
  .then((response) => {
    const playerTags = []
    // [...] Filling this array with strings
    return playerTags
  })

Promise.all(p1, p2).then((values) => {
  // Values is an array containing more than 12k strings
})

我预计 values 是一个长度为 2 的数组。values[0] 是 promise 1 返回的数组,values[1] 是 promise 2 返回的数组。我在这里缺少什么?

尝试在数组中传递 p1 和 p2,例如

const p1 = ModelA.find()
  .then((bandProfiles) => {
    const bandProfilePlayerTags = []
    // [...] Filling this array with strings
    return bandProfilePlayerTags
  })

const p2 = ModelB.find()
  .then((response) => {
    const playerTags = []
    // [...] Filling this array with strings
    return playerTags
  })

Promise.all([p1, p2]).then((values) => {
  // Values is an array containing more than 12k strings
})

Promise.all(iterable); expects an iterable object as a parameter

您确实将 12k 字符串的数组(一个承诺)传递给 Promise.all,而不是两个承诺的数组。你会想要使用

Promise.all([p1, p2]).then(values => …)
//          ^      ^