async与awite详解
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详解相关推荐
- async与await详解
async和await只是编译器功能.编译器会用Task类创建代码.如果不适用这两个关键字,也可以用C#4.0和Task类实现同样的功能,只是没有那么方便. 题主在概念上确实混淆的不行,但是确实asy ...
- async/await用法详解
ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async函数的定义方式 // 函数声明 async function fn() {}// 函数表达式 const fn = a ...
- async、await详解
一.async/await是什么? 简而言之, async用于申明一个function是异步的: 而await则可以认为是 async await的简写形式,是等待一个异步方法执行完成的. 二.asy ...
- async spring 默认线程池_Spring boot注解@Async线程池实例详解
这篇文章主要介绍了Spring boot注解@Async线程池实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从Spring3开始提供了@A ...
- 使用@Async进行异步调用详解
本文说下使用@Async进行异步调用详解 文章目录 概述 概述
- C# Task和async/await详解
C# Task和async/await详解 什么是异步 Task介绍 1 Task创建和运行 2 Task的阻塞方法(Wait/WaitAll/WaitAny) 1 Thread阻塞线程的方法 2 T ...
- 详解promise、async和await的执行顺序
说明: 本文摘自 详解 promise.async和await的执行顺序. 1.题目和答案 一道题题目:下面这段promise.async和await代码,请问控制台打印的顺序? async func ...
- $.ajax的async参数,jquery的$.ajax async使用详解
async在jquery ajax中是一个同步参数了,我们下面来给大家介绍在jquery ajax中使用async时碰到的一些问题与方法介绍,希望例子能给各位同学带来一些帮助哦. async默认是tr ...
- Node.js中Async详解
Node.js中Async详解:流程控制 安装 npm install async --save 地址 https://github.com/caolan/async Async的内容主要分为三部分 ...
最新文章
- sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)
- Gnu/Linux网卡绑定bonding
- linux之tr命令使用和总结
- Linux gcc 制作静态库01
- CVPR 2019 | 条件运动传播:从运动中学习物体性质
- 安装nginx、drizzle和lua
- spark算子大全glom_Spark 算子- Value Transformation
- mysq命令行导出sql_mysql 命令行导入导出.sql文件
- Vant中List组件immediate-check=false无效
- 微信PC版怎么安装旧版本
- 微信公众号视频下载教程
- server manager无法打开
- 有时间的时候没钱,有钱的时候没时间_天使Emily_一起游博客_一起游_17u.com
- 浙江理工大学本科毕业答辩beamer模板
- c语言做绘图软件,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
- JavaScript学习二
- 全新在线制作banner网站广告横幅源码
- K8s安装 遇到错误:docker-ce conflicts with 2:docker-1.13.1-208.git7d71120.el7_9.x86_64
- 【深解读】什么是数据科学?如何把数据变成产品?
- nginx的作用与原理