promise执行多步操作非常好用,那我们就来模仿一个多步操作的过程,那就以吃饭为例吧。要想在家吃顿饭,是要经过三个步骤的。
洗菜做饭。
坐下来吃饭。
收拾桌子洗碗。
这个过程是有一定的顺序的,你必须保证上一步完成,才能顺利进行下一步。我们可以在脑海里先想想这样一个简单的过程在ES5写起来就要有多层的嵌套。那我们现在用promise来实现。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 let state=1; 2 function step1(resolve,reject){ 3 console.log('1.开始-洗菜做饭'); 4 if(state==1){ 5 resolve('洗菜做饭--完成'); 6 }else{ 7 reject('洗菜做饭--出错'); 8 } 9 } 10 function step2(resolve,reject){ 11 console.log('2.开始-坐下来吃饭'); 12 if(state==1){ 13 resolve('坐下来吃饭--完成'); 14 }else{ 15 reject('坐下来吃饭--出错'); 16 } 17 } 18 function step3(resolve,reject){ 19 console.log('3.开始-收拾桌子洗完'); 20 if(state==1){ 21 resolve('收拾桌子洗完--完成'); 22 }else{ 23 reject('收拾桌子洗完--出错'); 24 } 25 } 26 new Promise(step1).then(function(val){ 27 console.log(val); 28 return new Promise(step2); 29 }).then(function(val){ 30 console.log(val); 31 return new Promise(step3); 32 }).then(function(val){ 33 console.log(val); 34 return val; 35 });