gpt4 book ai didi

javascript - `async/await` 链中的所有函数都必须使用 `async/await` 关键字吗?

转载 作者:行者123 更新时间:2023-11-30 14:06:40 27 4
gpt4 key购买 nike

async/await 链中的所有函数都必须使用 async/await 关键字吗?

async function one() {
return await fetch(.....);
}

async function two() {
return await one();
}

async function three() {
return await two();
}

我在教程中看到过一些调用者不必使用关键字的示例。

最佳答案

不,至少对于这个例子不是——如果你有一个函数只是等待一个Promise并返回结果,你可以只返回那个Promise单独,没有任何 asyncawait:

function one() {
return fetch(.....);
}

function two() {
return one();
}

function three() {
return two();
}

如果你想要一个扁平的函数体,你需要使用 await 当该函数消耗一个 Promise 并且需要在返回另一个已解决的 Promise 之前做其他事情给来电者。例如:

async function one() {
const fetchResult = await fetch(.....);
// do something with fetchResult
return foo;
}

function two() {
return one();
}

function three() {
return two();
}

这里,one 正在awaiting fetch 调用,然后在返回 Promise 之前用它做一些事情,但是 two three 不需要是 async 因为,同样,它们只是调用一个返回 Promise 并将该 Promise 返回给调用者的函数。如果 twothree 也必须在等待之后但在解决之前做一些事情,那么他们将不得不使用await(如果你想要一个扁平的函数体):

async function one() {
const fetchResult = await fetch(.....);
// do something with fetchResult
return foo;
}

async function two() {
const oneResult = await one();
console.log('got result for one');
return oneResult;
}

function three() {
return two();
}

关于javascript - `async/await` 链中的所有函数都必须使用 `async/await` 关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55250378/

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