gpt4 book ai didi

javascript - 理解异步和等待

转载 作者:行者123 更新时间:2023-12-01 01:38:56 25 4
gpt4 key购买 nike

我对 JS 还很陌生,我试图理解 Async 和 Await

我在网上浏览了这篇令人惊叹的文章,其中concluded explaining这段代码片段

function doubleAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x * 2);
}, 2000);
});
}

async function addAsync(x) {
const a = await doubleAfter2Seconds(10);
const b = await doubleAfter2Seconds(20);
const c = await doubleAfter2Seconds(30);
return x + a + b + c;
}


addAsync(10).then((sum) => {
console.log(sum);
});

现在,根据上面的文章,我能够得出一些结论,并且希望有人能够验证它是否正确。

要使用await,我们需要将其嵌套在Async函数下吗?异步解决了链接问题吗?但 Promise.all 也是如此吗?那么是什么让异步变得独特/更好呢?

最佳答案

To use await, we need to nest it under Async function?

是的,await 关键字仅在 async 函数中可用

Async solves the chaining problem?

它使代码看起来更简单

but then so does Promise.all?

您仍然可以将其与 await 一起使用,例如:

async function addAsync(x) {
const [a, b, c] = await Promise.all([
doubleAfter2Seconds(10),
doubleAfter2Seconds(20),
doubleAfter2Seconds(30)
]);
return x + a + b + c;
}

在这种情况下,Promise.all 中的所有 promise 都将并行解析,您将在 2 秒内获得结果,而不是 6 秒

关于javascript - 理解异步和等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52592930/

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