gpt4 book ai didi

javascript - 为什么 `async/await` 在我的情况下不起作用?

转载 作者:行者123 更新时间:2023-12-04 00:18:25 24 4
gpt4 key购买 nike

我读到了async/await ,但我有一个关键问题。
首先我解释一个老例子来展示我的问题的基础,然后我问我的确切问题。

大家都知道:

console.log('1');
console.log('2');
console.log('3'); // Ex: 123

这很简单,但在以下情况下:
console.log('1');
setTimeout(()=>{
console.log('2');
},0);
console.log('3'); // Ex: 132

也很简单, setTimeout函数是 asynchronousJavaScript从它跳转并在解析后运行它的函数,所以我们看到 21 之后和 3 .

但是,现在我读到 async/await我写了一个这样的函数:
(async function test() {
console.log('1');
await setTimeout(()=>{
console.log('2');
},0);
console.log('3');
})(); // Ex: 132

导出为 132也是,为什么?这是我的问题,为什么 32 之前运行?我期待是因为 async/await1 之后JavaScript 等待 2然后写 3 .为什么 132 ?

最佳答案

await仅当传递给它的值为 Promise 时才暂停.在您的情况下,setTimeout返回 Number所以 await 不会等待它。

正确的代码如下:

async function test() {
console.log('1');
await new Promise((resolve, reject) => {
setTimeout(() => {
console.log('2');
resolve()
}, 0);
});
console.log('3');
}

关于javascript - 为什么 `async/await` 在我的情况下不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48617486/

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