zoukankan      html  css  js  c++  java
  • async/await语法总结

            console.dir(Promise);
    
            const p = new Promise((resolve, reject) => {
                reject("失败");
                resolve("成功!");
            })
    
            async function getA(){
                // await后是一个Promise,如果不是也会默认转为一个Promise
                // 如果Promise执行结果为resolve,则await返回resolve参数,await下面的代码都会执行,且async函数后的then中返回的是async函数return后的值
                // 如果Promise执行结果为reject,则await无返回值,await下面的代码不会执行,且async函数后的catch会捕获到reject中的值
                const a = await p;
                console.log(a);
                console.log("这里是a之后的代码");
                return 666;
            }
    
            getA().then((res)=>{
                console.log(res);
            }).catch((error)=>{
                console.log(error);
            });
    

      

    1、async函数总是会返回一个promise

    返回一个promise有三种情形:

    1)async函数中显示的return一个promise;

    2)如果return的是一个具体值,则会转换为一个resolve为该值的promise;

    3)其它则会转换为一个resolve为undefined的promise。

    2、await后面跟什么?

    1)promise,此时如果promise执行结果为resolve,则await返回resolve中的值,如果promise执行结果为reject,则await无返回值;

    2)具体值,此时await返回的就是该值。

    3、错误处理:

    当await后的promise返回的是reject时会报错,报错后不会继续往下执行,除非我们进行以下几种错误处理方式:

    1)直接在await处进行错误处理,但await返回undefined,async函数再继续往下执行;

    2)在async函数执行处添加错误处理,则碰到第一个await后的promise返回reject时会进行错误处理,但async函数不会继续往下执行;

    3)将async中的Promise操作都放在try{}catch{}中。

  • 相关阅读:
    iOS基础教程:在建好的项目中加入CoreData[转]
    iOS开发--使用lipo命令制作模拟器与真机通用静态库
    Linux命令之du
    简单了解gzip、bzip2、xz
    Linux命令之rpm
    进入CentOS7紧急模式恢复root密码
    解决Linux用户模板文件被删除后显示不正常问题
    Linux修改用户基本信息(不含密码)
    Linux用户密码文件/etc/shadow相关
    SecureCRT、Xmanager对Linux上传下载文件或文件夹
  • 原文地址:https://www.cnblogs.com/samve/p/12342093.html
Copyright © 2011-2022 走看看