对于promise的理解

        一、首先,Promise 是一个构造函数,对回调函数的一种封装,对异步编程的一种改进,用同步的方式表达出来。可以说Promise是ajax的执行状态管理工具,它还应用到Vue里的fetch等方面。该构造函数身上有两个方法:Promise.all(),和Promise.race()。

         其实,我们应用的重点是:new出来的promise对象。它有三种状态:pending(进行中),resolved(已完成),rejected(已失败),状态一旦发生,就不能改变。执行new的时候状态就开始变化。promise对象身上有两个方法:then(),和catch()

        语法:    var oP =new Promise(function(resolve,reject){ 

                                        reject(data); || resolve(data);

                                 }) ;

       oP.then(function(data){ }, function(data){ })   //第一参数是在oP状态为resolved时执行。第二参数是在oP状态为rejected时执行(也叫错误捕获)。

        oP.catch( function(data){ })。 //捕获错误,出错时不捕获错误会报错。 

      oP.then(function(data){ }).then(function(data){ })  //then()还可以传递,但是数据data不会传递(即第二个data为undefined)。

         oP.then(function(data){ }, function(data){ }).catch( function(data){ })  //catch不会传递执行错误,只会执行一次(即这里的catch不会执行)。

        所以,我们在遇到回调函数层层嵌套时,就可以将函数返回一个promise对象。利用 then方法+catch方法 来处理。

        二、使用promise的好处是:

            1.代码结构更加扁平且更可读,清晰明了。

            2.能解决回调地狱问题。

            3.可将数据请求和业务逻辑分离开来。

            4.便于管理维护。

            5.能更好的捕获错误。


猜你喜欢

转载自blog.csdn.net/jasonson__/article/details/79591816