gpt4 book ai didi

javascript - Node 8 : converting a promise/callback structure to async/await

转载 作者:行者123 更新时间:2023-12-03 02:31:39 28 4
gpt4 key购买 nike

我有以下代码块:

new Promise((res, rej) => {
if (checkCondition()) {
res(getValue())
} else {
getValueAsync((result) => {
res(result)
})
}
}).then((value) => {
doStuff(value)
})

我想将其转换为使用 async/await ,但我不知道该怎么做。我知道当您专门使用 Promise 时,您会将调用替换为 then()value = await ... ,但是如何通过回调使其工作?可能吗?

最佳答案

首先,您必须确保您处于异步函数中。那么它可能是这样的:

async function example() {
let value = (checkCondition() ? getValue() : await getValueAsync());
doStuff(value);
}
await example();

但是,假设您也可以修改 getValueAsync,使其成为 async 函数或使其返回 Promise 。假设 getValueAsync 必须接受回调,我们无能为力:

async function example() {
let value = (checkCondition()
? getValue()
: await new Promise(res => getValueAsync(res))
);
doStuff(value);
}
await example();

您仍然可以获得不必自己创建完整的 Promise 链的好处。但是,getValueAsync 需要包装在 Promise 中才能与 await 一起使用。你应该仔细考虑这种改变对你来说是否值得。例如。如果您控制了大部分代码库和/或您正在调用的大多数函数已经是async/返回Promise

关于javascript - Node 8 : converting a promise/callback structure to async/await,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48710537/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com