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

相关文章
相关标签/搜索