【发布时间】:2019-07-08 22:54:00
【问题描述】:
我是 Node.js 异步/等待的新手。我很难理解 async/await 是如何工作的。如果有人能指出我的学习方向,将不胜感激。
async function loop() {
let i = 0;
while (i < 10000) {
i++;
}
console.log('step 2');
}
console.log('step 1');
loop();
console.log('step 3');
期望 : 'step 1', 'step 3', 'step 2' 按顺序打印,但它正在打印 'step 1', 'step 2', 'step 3' 就好像它是同步的。
【问题讨论】:
-
它是同步的,你没有任何异步或在函数内部等待。
-
把
await i++... 一个没有任何异步的async函数没有多大意义。 -
async不会导致函数在另一个线程中运行。 JavaScript 是单线程,所以没有任何异步等待,函数仍然同步运行。您可能在这里将“异步”与“多线程”混淆了。 -
@trincot 虽然将
await添加到不返回 Promise 的东西不是语法错误,但它也不会使事情异步。await i++是同步的,因此与i++完全相同(没有等待) -
@slebetman,然后您会惊讶地看到“step 3”在“step 2”之前输出。
awaitalways 暂停执行它所在的函数,然后立即返回一个承诺。
标签: javascript typescript asynchronous async-await