await会暂停当前 async function 的执行,等待 Promise 处理完成, async内是阻塞的, async外是非阻塞的
const mockAsyn = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('等待2秒')
}, 2000)
})
}
const testAsyn = async () => {
console.log('1')
const res = await mockAsyn()
console.log('2', res)
}
testAsyn()
console.log('3')
console.log('4')
// 1
// 3
// 4
// 2 等待2秒
若按照老师的说法, 阻塞了线程, 则结果应为:
// 1
// 2 等待2秒
// 3
// 4
js是单线程的, 如果阻塞了线程, 那么就相当于卡住了, 所以这个说法是不对的
p.s. async function是基于generator的, 根promise没啥关系, 只是一种更好的异步解决方案罢了…