【发布时间】:2021-10-17 18:42:15
【问题描述】:
我有以下代码来测试 Javascript 中的异步执行,使用承诺和超时:
'use strict'
const { promisify } = require('util')
const print = (err, contents) => {
if (err) console.error(err)
else console.log(contents)
}
const opA = (cb) => {
setTimeout(() => {
cb(null, 'A')
}, 500)
}
const opB = (cb) => {
setTimeout(() => {
cb(null, 'B')
}, 250)
}
const opC = (cb) => {
setTimeout(() => {
cb(null, 'C')
}, 125)
}
const opAProm = promisify(opA)
const opBProm = promisify(opB)
const opCProm = promisify(opC)
opAProm(print).then((res) => opBProm(print).then((res) => opCProm(print)))
我期望的结果是这样的:
A
B
C
但它只是打印出来:
A
我一直在寻找解决方案,我发现的最相似的是这个,尽管它并没有真正帮助我: Javascript Promises: then()'s aren't synchronous
所以我想知道如何使用 Promise 或 async/await 来解决这个问题。 提前致谢!
【问题讨论】:
标签: javascript asynchronous promise