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