ES6学习笔记——Promise、Generator、Async解决异步

一、Async—异步

1.Async是Generator的语法糖,Generator是解决异步请求的基础

2. Async函数的执行和普通函数一致,只需要一行代码即可,因为他具有内置的执行。

3.Async表示函数里有异步操作,await表示紧跟在后面的表达式需要等待结果。

4.await命令只能出现在async函数内部,否则会报错

ES6学习笔记——Promise、Generator、Async解决异步_第1张图片

二、Generator

1.执行 Generator 函数会返回一个遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。通过.next()方法来访问yield的状态

2.特征:

        ①function关键字与函数名之间有个星号*

                function* funGenerator(){}

        ②函数内部使用yield表达式

                function* helloWorldGenerator() {

                        yield 'hello'; 

                        yield 'world';

                        return 'ending';

                }

3.yield定义代码不同的内部状态。上述代码中helloWorldGenerator函数有三个状态:hello、world、return语句(结束执行)

        yield之前可以写无数个业务代码,代码块到yield表示一个状态,从上一个yield表达式停下的地方一直执行代码到另一个yield又是另一个状态

ES6学习笔记——Promise、Generator、Async解决异步_第2张图片

 ES6学习笔记——Promise、Generator、Async解决异步_第3张图片

三、Promise

1.Promise,是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。

2.Promise 是一个对象,从它可以获取异步操作的消息。

3.Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。

4.Promise对象提供统一的接口,使得控制异步操作更加容易。

5.Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。

6.Promise对象代表一个异步操作有三种状态 pending(进行中)、fulfilled(已成功)和rejected(已失败)。

        const promise = new Promise(function(resolve, reject) {

                  // ... some code

                  if (/* 异步操作成功 */){

                        resolve(value);  // pending -> fulfilled   成功的回调

                  } else {

                        reject(error); // pending -> rejected   失败的回调

                  }

        });

链式调用

        promise.then(() => {}).catch(() =>{})

then方法返回的是一个新的Promise实例

ES6学习笔记——Promise、Generator、Async解决异步_第4张图片

        不管promise最后的状态,在执行完then或catch指定的回调函数以后,都会执行finally方法指定的回调函数。finally方法的回调函数不接受任何参数,

ES6学习笔记——Promise、Generator、Async解决异步_第5张图片

 

你可能感兴趣的:(ajax,javascript,es6)