【发布时间】:2020-04-30 21:39:53
【问题描述】:
假设我有一个 for await 循环,如下所示:
const asyncIterable = {
[Symbol.asyncIterator]() {
return {
i: 0,
next() {
if (this.i < 3) {
return Promise.resolve({ value: this.i++, done: false });
}
return Promise.resolve({ done: true });
}
};
}
};
for await (let num of asyncIterable) {
await someAsyncFunction(); // (*)
console.log(num);
}
在这种情况下,是否可以保证按预期顺序打印出数字?换句话说,即使 for 循环本身包含异步调用(如 (*) 标记的行),是否保证 for 循环的每次迭代都在下一次开始之前完成执行?
【问题讨论】:
-
将 await 视为一种“在完成此步骤之前不要继续”
标签: javascript asynchronous async-await