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 的执行顺序恢复为常规函数的执行顺序一样。
为什么不直接使用await?
try{
let a = await callbackA();
let b = await callbackB(a);
let c = await callbackC(b);
} catch(err){}