await + async

2023-11-02  本文已影响0人  xueyueshuai

await等待右侧表达式的结果,这个结果是promise对象或者其他值。
如果它等到的不是一个 promise 对象,那 await 表达式的运算结果就是它等到的东西。
如果它等到的是一个 promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。

function test() {
    return new Promise(resolve => {
        setTimeout(() => resolve("test"), 2000);
    });
}
 
const result = await test();
console.log(result);
console.log('end')

由于test()造成的阻塞,console.log('end')会等到两秒后执行
所以为了避免造成阻塞,await 必须用在 async 函数中,async 函数调用不会造成阻塞。

function test() {
    return new Promise(resolve => {
        setTimeout(() => resolve("test"), 2000);
    });
}
 
async function test2() {
    const result = await test();
    console.log(result);
}
test2();
console.log('end');

先执行console.log('end'),两秒后执行console.log('test')

上一篇下一篇

猜你喜欢

热点阅读