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((value) => {//第一个函数就代表着,执行成功就走第一个函数里面的代码,value接收数据

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

            },(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的结果状态就是最终的结果状态

你可能感兴趣的:(ES6中的Promise)