等待Promise.all()的代码不会继续执行

时间:2019-02-28 12:56:01

标签: javascript

我在等待Promise.all()时遇到麻烦,此后再也没有继续。我有用于创建可取消的Promise的辅助函数:

create(promise) {
    let hasCanceled_ = false

    const wrappedPromise = new Promise((resolve, reject) => {
      promise.then(
        val => (hasCanceled_ ? reject({ isCanceled: true }) : resolve(val)),
        error => (hasCanceled_ ? reject({ isCanceled: true }) : reject(error))
      )
    })

    const cancelablePromise = {
      promise: wrappedPromise,
      cancel() {
        hasCanceled_ = true
      }
    }

    return cancelablePromise
  }

然后我创建了如下承诺:

const timelinePromise = this.pendingPromises.create(
    this.fetchWholeTimeline(false)
)
const confJobsPromise = this.pendingPromises.create(
    this.fetchWorkspaceJobConfigurationJobs(false)
)

至少我正在执行这段代码:

const [timelineResponse, confJobsResponse] = await Promise.all(
    timelinePromise.promise,
    confJobsPromise.promise
)

console.log(timelineResponse)
console.log(confJobsResponse)

console.logs从未执行过……我在这里做错了吗?

2 个答案:

答案 0 :(得分:0)

Promise.all期望一个promise数组(实际上是可迭代的)作为单个参数。

答案 1 :(得分:0)

Promise.all方法需要一个数组。

Promise.all([promiseA, promiseB])