我不明白如何使用异步函数。
为什么下面的代码会停止主线程?
async function foo() {
for (;;) {}
}
foo();
我不明白如何使用异步函数。
为什么下面的代码会停止主线程?
async function foo() {
for (;;) {}
}
foo();
在async
一般的关键字,并Promise,不使同步代码异步,慢跑代码快,或阻断代码无阻塞。
async
只是让函数返回一个Promise并提供(使用await
关键字)一种机制来与其他Promise进行交互,就好像有同步一样。
你的函数开始一个循环,然后就循环往复。
它没有到达函数的末尾,这将结束函数并解析它返回的Promise。
它不会到达await
关键字并在等待等待的Promise得到解决时暂停。
它只是绕来绕去。
如果你真的在循环中做一些计算量很大的事情,并且你想推到后台,那么你可以使用 Node.js Worker Thread或基于浏览器的Web Worker来完成它。
将async
关键字放在函数之前仅意味着这是异步函数。您需要await
在要实际等待的函数之前包含关键字。像这样:
async function hashPin(pin){
const hashedPin = await bcrypt.hash(pin, saltRounds);
}
这只是我的一个项目的示例(发布前已删除冗余代码)