【发布时间】:2021-12-05 13:49:41
【问题描述】:
我是 Javascript 新手,正在尝试学习 Promise 和 async/await 概念。我创建了三个 promise,如下所示。
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("promise1");
resolve("1");
}, 1000)
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("promise2");
resolve("2");
}, 5000)
});
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("promise3");
resolve("3");
}, 4000)
});
我创建了一个异步函数,它按顺序使用 await 来处理多个 Promise,如下所示。
async function example() {
const result1 = await promise1;
const result2 = await promise2;
const result3 = await promise3;
console.log(result1);
console.log(result2);
console.log(result3);
}
example();
浏览器控制台的输出是-
promise1
promise3
promise2
1
2
3
我不明白为什么在我的输出中 promise3 出现在 promise2 之前,因为在异步函数示例中的 await 语句序列中,promise2 出现在 promise3 之前?根据我的说法,输出应该如下所示 -
promise1
promise2
promise3
1
2
3
如果我遗漏了什么或有任何错误,请纠正我。
【问题讨论】:
-
那是因为
awaits 等待。 -
await关键字不会“解决”或“执行”或“运行”承诺。它只等它安定下来。解决 promise 的异步任务在此之前已经开始,通常是在构建 promise 时。
标签: javascript asynchronous async-await promise