ES6中自帶的promise的問題

ES6中的Promise做用:解決異步嵌套問題。javascript

可是隻能解決兩層嵌套,不能解決兩層以上嵌套;java

解決方法是我本身封裝的函數以下:算法

function Promising(){
           var _arr=[];
           this.then=function(fx){
               //將回調函數存到數組中,等隊列算法去順序調用
               _arr.push(fx);
               return this;//返回自身的this,能夠重複調用then()方法
           }
           this.resolve=function(value){//能夠傳個參數
               //做用:按照先進先出的順序調用數組中的函數
               if(_arr.length>0){
                   _arr.shift()(value);//執行隊列中的第一個函數
               }
           }
       }
       
       var _promise=new Promising();//new一個對象
       _promise.then(function(){
           window.setTimeout(function(){//這裏的延時器也是異步
               alert("3s");//先彈出3s;
               _promise.resolve();//每次執行完咱們想執行的代碼,就要調用resolve()方法,保證能執行下一個函數
           },3000);
       }).then(function(){
           window.setTimeout(function(){
               alert("2s");//再彈出2s;
               _promise.resolve();
           },2000);
       }).then(function(){
           window.setTimeout(function(){
               alert("1s");//再彈出1;
               _promise.resolve("tip");
           },1000);
       }).then(function(value){
           alert(value);
       }).resolve();

這樣能夠解決兩層以上嵌套;數組

很是方便,有什麼意見請留言!promise

相關文章
相關標籤/搜索