zoukankan      html  css  js  c++  java
  • 令人清爽的异步函数async、await

    1.什么是async、await?

    async用于声明一个函数是异步的。而await从字面意思上是“等待”的意思,就是用于等待异步完成。并且await只能在async函数中使用;
    通常async、await都是跟随Promise一起使用的。为什么这么说呢?因为async返回的都是一个Promise对象同时async适用于任何类型的函数上。这样await得到的就是一个Promise对象(如果不是Promise对象的话那async返回的是什么 就是什么);
    async function testSync() {
    const response = await new Promise(resolve => {
    setTimeout(() => {
    resolve("async await test...");
    }, 1000);
    });
    console.log(response);
    }
    testSync();

    2.async、await串行并行处理

    串行:等待前面一个await执行后接着执行下一个await,以此类推
    async function asyncAwaitFn(str) {
    return await new Promise((resolve, reject) => {
    setTimeout(() => {
    resolve(str)
    }, 1000);
    })
    }
    const serialFn = async () => { //串行执行
    console.time('serialFn')
    console.log(await asyncAwaitFn('string 1'));
    console.log(await asyncAwaitFn('string 2'));
    console.timeEnd('serialFn')
    }
    serialFn();
    并行:将多个promise直接发起请求(先执行async所在函数),然后再进行await操作。
    async function asyncAwaitFn(str) {
    return await new Promise((resolve, reject) => {
    setTimeout(() => {
    resolve(str)
    }, 1000);
    })
    }
    const parallel = async () => { //并行执行
    console.time('parallel')
    const parallelOne = asyncAwaitFn('string 1');
    const parallelTwo = asyncAwaitFn('string 2')
    //直接打印
    console.log(await parallelOne)
    console.log(await parallelTwo)
    console.timeEnd('parallel')
    }
    parallel()

    async、await错误处理使用try catch

    async function catchErr() {
    try {
    const errRes = await new Promise((resolve, reject) => {
    setTimeout(() => {
    reject("http error...");
    }, 1000);
    );
    //平常我们也可以在await请求成功后通过判断当前status是不是200来判断请求是否成功
    // console.log(errRes.status, errRes.statusText);
    } catch(err) {
    console.log(err);
    }
    }
    catchErr(); //

  • 相关阅读:
    vue-以文件流-blob-的形式-下载-导出文件
    vue-element-upload 文件上传打开选择文件弹框前进行提示或操作
    django-创建Template(模板)
    django-配置url
    django-创建页面
    django创建应用及应用模块解释
    django创建项目及目录介绍
    django的安装
    Python2X学习16-python-列表
    Request
  • 原文地址:https://www.cnblogs.com/panax/p/9450534.html
Copyright © 2011-2022 走看看