promise generator aysnc/await

Posted liyunlonggg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了promise generator aysnc/await相关的知识,希望对你有一定的参考价值。

 promise: 比较简单,也是最常用的 主要是用来解决异步操作  是一个对象

promise对象一共有三个状态

等待
实现(resolve)
失败(reject)
从创建开始,promise对象的状态就是等待的状态,直到resolve和reject被调用

当promise被变成resolve时,会触发then()里的函数

当promise被变成reject时,会触发catch()里的函数 (也可以将err=>{...}写在then中,当做then的第二个形参传入,在reject时也会触发)

 

Generator

Generator函数是一个可以“暂停”的函数写法,可以通过对函数内部设置 “暂停”按钮 返回一个值并暂停函数执行,直到让他“开始”

Generator函数的创建方法是在函数后边添加一个*

 

在调用Generator函数时,并不会直接出发该函数,而是返回一个Generator对象,然后,通过Generator对象.next()来执行函数

“暂停”按钮: 在执行到yield的时候,会暂停该函数,并“return”出yield的内容,直到下次执行next()
“开始”按钮: 通过next()执行函数
next()返回值是一个对象,对象包含value和 done
value: 返回的值
done: Boolean值,如果为false,代表着是yield输出,还没有return(无论yield后函数中还有没有代码,都会返回false),如果为true,代表着此次输出是return或已经结束

 

async/await
async/await是一种处理promise的及其简便的方法

async函数返回的是一个promise对象,在async函数中,碰到await会等待,等待await后边的表达式的计算结果完成,这个表达式的计算结果可以是promise或者其他值(因为await可以等待表达式结果,所以可以等待react中的setState({}))

 

 

 

 从回调函数,到promise,再到generator,再到Async/await,这四种分别代表了javascript异步编程解决方案的进化路程。async和generator函数主要就是为了解决异步的并发调用使用的 ,直接将参数从then里取出来,相比promise的链式调用,传参更加方便,异步顺序更加清晰

以上是关于promise generator aysnc/await的主要内容,如果未能解决你的问题,请参考以下文章

promise generator aysnc/await

es6,promise,generator,next,yield与koa

Generator 与 Promise 一起使用 简单实现 await

js 手撕Promise2 实现静态方法 手撕async await generator

取代Promise的Generator生成器函数

引入Promise对象和Generator生成器函数