b()为异步函数
卡死情况
async function a() {
await new Promise(r => setTimeout(r, 3000));
console.log('a')
}
async function b() {
while (true) {
}
}
function c() {
console.log('c')
}
function main() {
a()
b()
c()
}
main()
// 直接卡死
// a 和 c 均不输出
// CPU占用率高
不卡死情况
async function a() {
await new Promise(r => setTimeout(r, 3000));
console.log('a')
}
async function b() {
while (true) {
await new Promise(r => setTimeout(r, 3000));
}
}
function c() {
console.log('c')
}
function main() {
a()
b()
c()
}
main()
// 输出c a
// 说明promise延时不会卡死
// CPU占用率不高
b()为同步函数
卡死情况
async function a() {
await new Promise(r => setTimeout(r, 3000));
console.log('a')
}
function b() {
while (true) {
}
}
function c() {
console.log('c')
}
function main() {
a()
b()
c()
}
main()
// 直接卡死
// a 和 c 均不输出
// CPU占用率高
结论
延时要用
await new Promise(r => setTimeout(r, 3000));
但await
要求上级函数为异步async
函数