今天在使用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 的阻塞只在该函数作用域有效,本质上还是异步回调调用。
本文通过实验探讨了async与await在JavaScript中是否会导致线程阻塞。结果显示,async/await的阻塞仅限于其所在函数的作用域内,不影响其他并行执行的函数,证实了其本质仍是异步回调。
3104

被折叠的 条评论
为什么被折叠?



