async与awite详解

使用async与awite的目的:使用async和await能够使我们的异步代码书写,更像是在使用 同步代码那样,不会出现层层嵌套

注:promise类型对象有两个值,[[promistStatus]]返回对象的状态,[[promiseValue]]返回对象的值

1,async使用

 我们使用scync函数要明白两点,第一点是async函数自身返回值是一个promise对象,第二点是async函数自身返回的这个promise对象的结果是由async函数的返回值所控制的,话不多说,直接上代码

async function fn(){return;
}
let result = fn()
console.log(result); //返回一个promise对象,[[promistStatus]]为resolved,[[promiseValue]]为undefindasync function fn1(){return '加油';
}
let result = fn1()
console.log(result);//返回一个promise对象,[[promistStatus]]为resolved,[[promiseValue]]为'加油'async function fn2(){throw new Error('出错了');
}
let result = fn2();返回一个promise对象,[[promistStatus]]为rejucted,[[promiseValue]]为错误信息async function fn3(){return new Promise((resolve,reject)=>{resolve("成功信息");})
}
let result = fn3();返回一个promise对象,[[promistStatus]]resolve,[[promiseValue]]为成功信息async function fn4(){return new Promise((resolve,reject)=>{reject("失败信息");})
}
let result = fn4();返回一个promise对象,[[promistStatus]]reject,[[promiseValue]]为失败信息// 只要ascnc函数不去return一个promise对象,那么async函数自身返回的promise对象的状态都是成功的,值为我们返回的值, 除非像    //  fn2()函数抛出错误。
// 如果async返回了一个promise对象,那么async返回promise对象的结果就是我们返回的promise对象

2,await结合async使用

​ await不可以单独使用,必须在async函数内部使用,而awite返回值是promise成功或失败的结果

//创建一个promise对象
let  p  =  new Promise((resolve,reject)=>{resolve("p成功返回值");})let p1  =  new Promise((resolve,reject)=>{reject("p1失败返回值");})
async function fn3(){let a = await p();let b = await p1();console.log(a); //"p成功返回值"console.log(b); //"p1失败返回值"
}
// 然后我们就可以结合async去封装一些异步请求了

async与awite详解相关推荐

  1. async与await详解

    async和await只是编译器功能.编译器会用Task类创建代码.如果不适用这两个关键字,也可以用C#4.0和Task类实现同样的功能,只是没有那么方便. 题主在概念上确实混淆的不行,但是确实asy ...

  2. async/await用法详解

    ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async函数的定义方式 // 函数声明 async function fn() {}// 函数表达式 const fn = a ...

  3. async、await详解

    一.async/await是什么? 简而言之, async用于申明一个function是异步的: 而await则可以认为是 async await的简写形式,是等待一个异步方法执行完成的. 二.asy ...

  4. async spring 默认线程池_Spring boot注解@Async线程池实例详解

    这篇文章主要介绍了Spring boot注解@Async线程池实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从Spring3开始提供了@A ...

  5. 使用@Async进行异步调用详解

    本文说下使用@Async进行异步调用详解 文章目录 概述 概述

  6. C# Task和async/await详解

    C# Task和async/await详解 什么是异步 Task介绍 1 Task创建和运行 2 Task的阻塞方法(Wait/WaitAll/WaitAny) 1 Thread阻塞线程的方法 2 T ...

  7. 详解promise、async和await的执行顺序

    说明: 本文摘自 详解 promise.async和await的执行顺序. 1.题目和答案 一道题题目:下面这段promise.async和await代码,请问控制台打印的顺序? async func ...

  8. $.ajax的async参数,jquery的$.ajax async使用详解

    async在jquery ajax中是一个同步参数了,我们下面来给大家介绍在jquery ajax中使用async时碰到的一些问题与方法介绍,希望例子能给各位同学带来一些帮助哦. async默认是tr ...

  9. Node.js中Async详解

    Node.js中Async详解:流程控制 安装 npm install async --save 地址 https://github.com/caolan/async Async的内容主要分为三部分 ...

最新文章

  1. sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)
  2. Gnu/Linux网卡绑定bonding
  3. linux之tr命令使用和总结
  4. Linux gcc 制作静态库01
  5. CVPR 2019 | 条件运动传播:从运动中学习物体性质
  6. 安装nginx、drizzle和lua
  7. spark算子大全glom_Spark 算子- Value Transformation
  8. mysq命令行导出sql_mysql 命令行导入导出.sql文件
  9. Vant中List组件immediate-check=false无效
  10. 微信PC版怎么安装旧版本
  11. 微信公众号视频下载教程
  12. server manager无法打开
  13. 有时间的时候没钱,有钱的时候没时间_天使Emily_一起游博客_一起游_17u.com
  14. 浙江理工大学本科毕业答辩beamer模板
  15. c语言做绘图软件,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  16. JavaScript学习二
  17. 全新在线制作banner网站广告横幅源码
  18. K8s安装 遇到错误:docker-ce conflicts with 2:docker-1.13.1-208.git7d71120.el7_9.x86_64
  19. 【深解读】什么是数据科学?如何把数据变成产品?
  20. nginx的作用与原理

热门文章

  1. 华为设备配置IS-IS命令
  2. Date: 7 Dec, Saturday 佳能交流空间
  3. GDKOI2023游记
  4. Luogu 3642 [APIO 2016] 烟火表演
  5. 高通华裔工程师跳楼自杀,任职7年后遭解雇
  6. 逻辑代数基本公式及定律
  7. java如何产生一个随机数
  8. 为啥用计算机分析模拟,计算机模拟的优缺点及应用分析
  9. php试卷分析,对试卷分析的必要性与试卷分析的技巧
  10. [转]信息安全相关理论题(二)