如何让Promise按顺序执行?

问题描述 投票:0回答:1
let promise = ''

function A() {
  return new Promise((resolve) => {
    resolve(promise)
  })
}

function callbackA(res) {
  console.log("callbackA:", res)
  
  return new Promise(resolve => {
    promise = 'A'
    resolve()
  })
}

function B() {
  return new Promise((resolve) => {
    resolve(promise)
  })
}

function callbackB(res) {
  console.log("callbackB:", res)
}

function C() {
  promise = 'C'
  return promise
}

function callbackC(res) {
  console.log("callbackC:", res)
}

function promiseThen(maybePromise, callback) {
}

promiseThen(A, callbackA)
promiseThen(B, callbackB)
promiseThen(C, callbackC)

函数

promiseThen
接受两个参数:
maybePromise
,它可以是一个 Promise 或常规函数,以及
callback
,它接收它们的结果并对其进行操作。

我希望首先执行 Promise,完成其所有

then
功能,然后继续执行下一个 Promise。所以上面代码的结果应该是:

callbackC: C
callbackA: C
callbackB: A

就像将 Promise 的执行顺序恢复为常规函数的执行顺序一样。

javascript promise
1个回答
0
投票

为什么不直接使用await?

try{
    let a = await callbackA(); 
    let b = await callbackB(a); 
    let c = await callbackC(b);
} catch(err){}
© www.soinside.com 2019 - 2024. All rights reserved.