美文网首页
Async和Await

Async和Await

作者: 梦里coding | 来源:发表于2018-10-19 15:50 被阅读0次

1、概述

async(异步) 函数变体

以下是已经存在的异步函数变体。请注意无处不在的 async 关键字。

  • 异步函数声明: async function foo() {}
  • 异步函数表达式: const foo = async function () {};
  • 异步函数定义:let obj = { async foo() {} }
  • 异步箭头函数: const foo = async () => {};

async(异步) 函数总是返回 Promises

async(异步) 函数的 Promise 完成状态:

    async function asyncFunc() {
    return 123;
    }
    asyncFunc()
    .then(x => console.log(x));
    // 123

async(异步) 函数的 Promise 拒绝状态:

    async function asyncFunc() {
    throw new Error('Problem!');
    }
    asyncFunc()
    .catch(err => console.log(err));
    // Error: Problem!

通过 await 处理 async(异步) 计算的结果和错误

await(只允许在 async(异步) 函数内部使用)等待其操作对象 Promise 返回:

  • 如果 Promise 是完成状态,await 的结果是完成态的值。
  • 如果 Promise 是拒绝状态,await 会抛出拒绝值。
    处理单个 async(异步) 返回值:
    async function asyncFunc() {
    const result = await otherAsyncFunc();
    console.log(result);
    }
    // 等价于:
    function asyncFunc() {
    return otherAsyncFunc()
    .then(result => {
    console.log(result);
    });
    }

按顺序处理多个 async(异步) 返回值:

    async function asyncFunc() {
    const result1 = await otherAsyncFunc1();
    console.log(result1);
    const result2 = await otherAsyncFunc2();
    console.log(result2);
    }
    // 等价于:
    function asyncFunc() {
    return otherAsyncFunc1()
    .then(result1 => {
    console.log(result1);
    return otherAsyncFunc2();
    })
    .then(result2 => {
    console.log(result2);
    });
    }

并行处理多个 async(异步) 返回值:

    async function asyncFunc() {
    const [result1, result2] = await Promise.all([
    otherAsyncFunc1(),
    otherAsyncFunc2(),
    ]);
    console.log(result1, result2);
    }
    // 等价于:
    function asyncFunc() {
    return Promise.all([
    otherAsyncFunc1(),
    otherAsyncFunc2(),
    ])
    .then([result1, result2] => {
    console.log(result1, result2);
    });
    }

相关文章

  • async和await

    浅谈Async/Await用 async/await 来处理异步 async和await async:声明一个异步...

  • ES8(一) —— async&await

    目录 async和普通函数的区别 await async/await处理多回调异步 async和await必须配合...

  • ES6中的好东西

    1 Await/Async 前端的回调时代我没有赶上,我赶上的是await/async时代。await和async...

  • 使用 async 和 await,实现 fetch 同步请求

    使用 async 和 await,实现 fetch 同步请求 关于 async 和 await 的介绍https:...

  • ES2017 async 函数

    async 和 await 在干什么 每个名称都有意义async : 异步await: async wait简...

  • async-await

    一、async-await和Promise的关系 async-await是promise和generator的语法...

  • 小程序-云开发

    async和await async:异步(无等待)await:等待(是为了同步) 一、await 关键字只在 as...

  • async / await

    async / await 优缺点 async 和 await 相比直接使用 Promise 来说,优势在于处理 ...

  • flutter中compute和isolate

    async和await:对于普通的任务,使用async和await可实现异步处理任务,而async的处理方式并非使...

  • Promise 执行顺序

    使用 async 和 await

网友评论

      本文标题:Async和Await

      本文链接:https://www.haomeiwen.com/subject/oszyzftx.html