深夜吃糖,理解 async 和 await


async 关键字

放在函数声明之前,生成一个异步函数,保证函数的返回值为 promise

async function hello() { return "Hello" };
hello();

async.png

  • 将 async 关键字加到函数申明中,可以告诉它们返回的是 promise,而不是直接返回值

  • 避免了同步函数为支持使用 await 带来的任何潜在开销

  • 在函数声明为 async 时,JavaScript引擎会添加必要的处理以优化程序

await 关键字

await 只在异步函数里面才起作用。它可以放在任何异步的,基于 promise 的函数之前。它会暂停代码在该行上,直到 promise 完成,然后返回结果值。在暂停的同时,其他正在等待执行的代码就有机会执行了。

function takeLongTime() {
    return new Promise(resolve => {
        setTimeout(() => resolve("long_time_value"), 1000);
    });
}

async function test() {
    const v = await takeLongTime();
    console.log(v);
}

test();

await.png

参考文章

理解 JavaScript 的 async/await

async 函数的含义和用法


文章作者: April-cl
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 April-cl !
  目录