gpt4 book ai didi

javascript - 异步/等待在我的示例中不起作用

转载 作者:行者123 更新时间:2023-11-30 08:23:01 24 4
gpt4 key购买 nike

许多 JavaScript 开发人员都知道 async/await 及其优点,所以我尝试测试一个异步操作的旧示例,让我们看看我的实验:

无疑下面代码的答案是:

/*Line: 1*/ console.log(`1`);
/*Line: 2*/ console.log(`2`);
/*Line: 3*/ console.log(`3`);

//==> 123

所以我想为第二行添加一个setTimeout:

/*Line: 1*/ console.log(`1`);
/*Line: 2*/ setTimeout(() => {
console.log(`2`);
}, 0);
/*Line: 3*/ console.log(`3`);

//==> 132

由于第二行的异步操作213之后,所以在控制台中显示132

我决定使用新的 JavaScriptasync/await 特性来再次查看 123,所以我把上面的代码写成这样:

(async () => {
console.log(`1`);
await setTimeout(() => {
console.log(`2`);
}, 0);
console.log(`3`);
})();

但它不起作用,我在我的控制台中再次看到了 132。哪一部分我做错了或者我不知道?

最佳答案

await 等待 promise 被解析。由于 setTimeout 不是一个 promise ,程序的执行不会等到它被执行。您需要按照以下链接的第一个示例中指定的方式将 setTimeout() 包装在 promise 中,以便您的示例按预期工作:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

关于javascript - 异步/等待在我的示例中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50329120/

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