异步的学习

1.promise

2.iterator

3.genarator

4.async

一。promise对象

***异步编程的一种解决方案,比传统的回调函数和事件更强大更合理。

***promise是一个容器,保存着未来才会结束的事件的结果。

***特点:promise对象代表一个异步操作

1)只有异步操作的结果可以决定当前是哪一种状态,其他操作无法改变

2)状态改变后就不会再变

Pending=>Fulfilled(已成功)/Rejected(已失败)  只要这两种情况发生就代表Resolved(已定型)

与事件不同的是,此时改变已经发生,再添加回调函数,也会立即得到结果。事件是。如果错过了它,再去监听得不到结果。

***promise对象可以将异步操作以同步操作的流程表达出来,避免层层嵌套的回调函数。=

***promise对象提供统一接口,使得控制异步操作更容易。

***Promise构造函数接受两个函数作为参数,分别是resolve和reject。又js引擎提供,不用自己部署。resolve作用是将promise对象的状态从Pending=>Resolved,在异步操作成功时调用,并将操作的结果作为参数value传递出去。reject是将promise对象的状态从Pending=>Rejected,在异步操作失败时调用,并将报出的错误作为参数 error传递出去。

***promise 实例生成以后,可以用then方法分别指定Resolved状态和Rejected 状态的回调函数。

promise.then(function(value){//success},

function(error){ //failure }

)

二。iterator(遍历器,本质上是一个指针对象)和for ...of

***js原有的数据结构主要是数组和对象,es6新添加了Map和Set。

遍历器是这样一种机制:统一的接口机制来处理所有不同的数据结构,任何数据结构,只要部署interator接口,就可以完成遍历操作(依次处理成员)

***三个作用

1)为各种数据结构提供统一的、简便的访问接口。

2)使数据结构成员能够按某种次序排列。

3)供for ...of消费

三。generator函数

***可以理解成一个状态机,封装了多个内部状态

还是一个遍历器对象生产函数,返回一个遍历器对象,依次遍历generator函数内部的每一个状态。

1)function*funcName()

2)内部使用yield语句定义不同的内部状态

四。async函数(generator函数的语法糖)

将generator函数的星号(*)替换成async,将yield替换成await。仅此而已。

你可能感兴趣的:(异步的学习)