javascript异步编程 Async/await
Async/await
Async/await 在学习他之前应当补充一定的 promise 知识
它是一种与 promise 相配合的特殊语法,目前被认为是异步编程的终级解决方案
值得我们每一个人学习0
Async
它的字面意思本身就是异步的简写,在代码中他被放置在函数前面,可以使得函数的返回值 value 转化为一个 promise
	async function fun(){
    return 123
	}
	const res = fun();
	console.log(res);

如上图所示,对于非 promise 对象它会通过 Promise.resolve() 方法吧函数的 return 转化为 promise 对象,这种写法,我们便可以通过原始的 .then() 方法来获得返回值
await
await 等待,他等待着async 函数的返回值,这不仅仅适用于 Promise 对象,他适合于任何表达式结果,所以他的后面是可以接普通函数调用的直接量的,
await 如果等待到的是一个不是 Promise 对戏那个,那么 await 表达式的运算结果就是它等到的东西, 如果它等到的是一个 Promise 对象,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。 而他之所以被要求写在 Async 函数里面就是因为这样它会在 Promise 中异步执行
Async/await的优势
Async/await的优势就在于处理 .then() 的函数链
在处理多个 Promise 对象时,函数代码辨识度会很高,避免多个.then() 相互嵌套,
同时 await 命令后面的 Promise 对象,运行结果可能是 rejected ,所以最好把 await 命令放在 try...catch 代码块中。
//定时的函数三次异步回调
function fun() {
    const time1 = 300;
    fun1(time1)
        .then(time2 => fun2(time2))
        .then(time3 => fun3(time3))
        .then(result => {
            console.timeEnd("thefun");
        });
}
async function fun() {
    console.time("fun");
    const time1 = 300;
    const time2 = await fun1(time1);
    const time3 = await fun2(time2);
    const result = await fun3(time3);
    console.timeEnd("thefun");
}
不仅代码简洁,易读性也更好;
以上为 async/await 的基本用法,学习之前需理解 Promise 欢迎一起学习进步;
javascript异步编程 Async/await的更多相关文章
- JavaScript异步编程——Async/Await vs Promise
		
兼容性 提醒一下各位,Node 现在从版本 7.6 开始就支持 async/await 了.而就在前几天,Node 8已经正式发布了,你可以放心地使用它. 如果你还没有试过它,这里有一堆带有示例的理由 ...
 - 异步编程Async/await关键字
		
异步编程Async \await 关键字在各编程语言中的发展(出现)纪实. 时间 语言版本 2012.08.15 C#5.0(VS2012) 2015.09.13 Python 3.5 2016.03 ...
 - 抓住异步编程async/await语法糖的牛鼻子: SynchronizationContext
		
长话短说,本文带大家抓住异步编程async/await语法糖的牛鼻子: SynchronizationContext 引言 C#异步编程语法糖async/await,使开发者很容易就能编写异步代码. ...
 - 温故知新,CSharp遇见异步编程(Async/Await),聊聊异步编程最佳做法
		
什么是异步编程(Async/Await) Async/Await本质上是通过编译器实现的语法糖,它让我们能够轻松的写出简洁.易懂.易维护的异步代码. Async/Await是C# 5引入的关键字,用以 ...
 - [C#] 谈谈异步编程async await
		
为什么需要异步,异步对可能起阻止作用的活动(例如,应用程序访问 Web 时)至关重要. 对 Web 资源的访问有时很慢或会延迟. 如果此类活动在同步过程中受阻,则整个应用程序必须等待. 在异步过程中, ...
 - .net 异步编程async & await关键字的思考
		
C# 5.0引入了两个关键字 async和await,这两个关键字在很大程度上帮助我们简化了异步编程的实现代码,而且TPL中的task与async和await有很大的关系 思考了一下异步编程中的asy ...
 - 异步编程async/await
		
什么是异步? 在异步程序中,程序代码不需要按照编写时的顺序严格执行,有时需要一在一个新的线程中运行一部分代码,有时无需创建新的 线程,但是为了更好的利用单个线程的能力,需要改变代码的执行顺序. 进程 ...
 - c#异步编程async await
		
可以代替协程了 但是需要.net4 版本 unity2017以上版本可以用了 再也可以不用蛋疼的没有返回值的协程了 //异步编程,和Task一起用 async void TestAsync(){ // ...
 - .NetCore 异步编程 -  async/await
		
前言: 这段时间开始用.netcore做公司项目,发现前辈搭的框架通篇运用了异步编程方式,也就是async/await方式,作为一个刚接触的小白,自然不太明白其中原理,最重要的是,这个玩意如果不明白基 ...
 
随机推荐
- List分页
			
listObj.Skip((pagecount-1)*pagesize).Take(pagesize) 假设你每页10条数据当前是第3页 跳到第4页则:listObj.Skip((4-1)*10).T ...
 - jquery 日期和时间的逻辑,比较大小
			
HTML:<ul> <li> <span>到达</span> <img class="date-s" src="/p ...
 - 2019-9-2-dotnet-命名管道名字长度限制
			
title author date CreateTime categories dotnet 命名管道名字长度限制 lindexi 2019-09-02 11:54:50 +0800 2019-09- ...
 - 2019-7-22-WPF-如何判断两个-LinearGradientBrush-相等
			
title author date CreateTime categories WPF 如何判断两个 LinearGradientBrush 相等 lindexi 2019-07-22 21:26:2 ...
 - codevs1506 传话
			
题目描述 Description 一个朋友网络,如果a认识b,那么如果a第一次收到某个消息,那么会把这个消息传给b,以及所有a认识的人. 如果a认识b,b不一定认识a. 所有人从1到n编号,给出所有“ ...
 - md5小工具
			
<?php$str = "123456";echo md5($str);?>
 - Kubernetes1.4即将发布
			
(一)发布历史 Kubernetes 1.0 - 2015年7月发布 Kubernetes 1.1 - 2015年11月发布 Kubernetes 1.2 - 2016年3月发布 Kubernetes ...
 - git push的时候每次都要输入用户名和密码的问题解决
			
换了个ssh key,发现每次git push origin master的时候都要输入用户名和密码 原因是在添加远程库的时候使用了https的方式..所以每次都要用https的方式push到远程库 ...
 - 实现一个简易的promise
			
//promise里面只有三个状态,且三个状态的转换形式有两种 //由pending转换为fulfilled,由pending转换为rejected //Promise的构造函数参数是一个函数,函数的 ...
 - @atcoder - AGC036E@ ABC String
			
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个仅由 A, B, C 组成的字符串 S. 求 S 的一个 ...