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