ES6从入门到入狱-promise篇

ES6之promise

1.什么是Promise?
抽象表达:Promise,是JS进行异步编程的一种新的解决方案

具体表达:从语法上说Promise是一个构造函数,

从功能上说Promise对象是用来封装异步操作并可以获取其结果
2.Promise 状态

promise总共有三个状态,初始化状态为pending,
执行成功状态更改为resolved,执行失败状态更改为rejected

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

                let time = Date.now();

                //模拟异步函数

                setTimeout(() => {

                    if ( time %2 == 0 ) {

                        resolve(time);//如果成功了就执行resolve函数 并把数据value传进去

                    } else {

                        reject(time);//如果失败了 就执行reject函数                   

}

                }, 1000) 

});

promise.then((res) => {//第一个函数就代表着,执行成功就走第一个函数里面的代码,value接收数据

                console.log(res+ '成功的回调函数')

            },(error) => {//执行失败就会执行第二个函数里面的代码,error接收参数

                console.log(error + '失败的回调函数');

})
3.什么是回调地狱,代码如下:
        doSomething(function (result) {

            doSomethingElse(result,function (newResult) {

                doThirdThing(newResult,function (finalResult) {

                    console.log('God callback');

                },failureCallback)

            },failureCallback)

        },failureCallback);

回调地狱的缺点:不便于阅读,处理异常也比较麻烦

4.使用promise处理回调地狱

  doSomething.then(function (result) {

            return doSomethingElse(result);

        })

        .then(function (newResult) {

            return doThirdThing(newResult);

        })

        .then(function (finalResult) {

            return console.log('God callback');

        })

        .catch(failureCallback);
5.Promise API
1. Promise构造函数: Promise (excutor) { }
      excutor函数:同步执行(resolve, reject) =>行}

      resolve函数:内部定义成功时我们调用的函数value => {}reject函数:内部定义失败时我们调用的函数reason => { }

      说明: excutor 会在Promise内部立即同步回调,异步操作在执行器中执行

2. Promise . prototype . then方法: (onResolved, onRejected) => {}
      onResolved函数:成功的回调函数(value) => {}onRejected函数:失败的回调函数(reason) => {}

      说明:指定用于得到成功value的成功回调和用于得到失败reason的失败回调|返回 一个新的promise对象

3. Promise . prototype . catch方法: (orRejected) => {}
      onRejected函数:失败的回调函数(reason) => {}

      说明: then()的语法糖,相当于: then( undefined, onRejected)

4. Promise.resolve方法: (value) => {}
      value:成功的数据或promise对象

      说明:返回一个成功/失败的promise对象

5. Promise . reject方法: (reason) => {}
      reason:失败的原因

      说明:返回一个 失败的promise对象

6. Promise .all方法: (promises) => {}
      promises:包含n个promise的数组

      说明:返回一个新的promise,只有所有的promise都成功才成功,只要有一个失败了就直接失败

7. Promise.race方法: (promises) => {}
      promises:包含n个promise的数组

      说明:返回一个 新的promise,第” 个完成的promise的结果状态就是最终的结果状态
6 注意内容
1、Promise对象的then方法会返回一个全新的Promise对象
2、后面的then方法就是在为上一个then返回的Promise注册回调
3、前面then方法中回调函数的返回值会作为后面then方法回调的参数
4、如果回调中返回的是Promise,那后面then方法的回调会等待它的结束

你可能感兴趣的:(ES6从入门到入狱)