今天在使用async与await的时候,突然想到await阻塞的时候会不会影响到整个线程,所以做了个小实验
代码:
const doSomeThing = async () => {
console.log('start do some thing');
await doA();
await doB();
console.log('do some thing done');
};
const doAnotherThing = () => {
console.log('do another thing');
};
const doA = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('do a');
resolve();
}, 0);
});
};
const doB = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('do b');
resolve();
}, 0);
});
};
doSomeThing();
doAnotherThing();
输出结果:
start do some thing
do another thing
do a
do b
do some thing done
所以async,await 的阻塞只在该函数作用域有效,本质上还是异步回调调用。