@Wangww0925
2019-08-21T08:51:39.000000Z
字数 1137
阅读 203
ES6
promise 承诺的意思
ES6中的promise的出现给我们很好的解决了ES5中回调地狱的问题
什么叫ES5回调地狱:在使用ES5的时候,在多层嵌套回调时,写完的代码层次过多,很难进行维护和二次开发
ES6认识到了这点问题,现在promise的使用,完美解决了这个问题。那我们如何理解promise这个单词在ES5中的作用那,你可以想象他是一种承诺,当它成功时执行一些代码,当它失败时执行一些代码。它更符合人类的行为思考习惯,而不在是晦涩难懂的冰冷语言。
参数:
resolve: 执行成功回调
reject:执行失败回调
promise执行多步操作非常好用,那我们就来模仿一个多步操作的过程,那就以吃饭为例吧。要想在家吃顿饭,是要经过三个步骤的。
1、洗菜做饭。
2、坐下来吃饭。
3、收拾桌子洗碗。
这个过程是有一定的顺序的,你必须保证上一步完成,才能顺利进行下一步。我们可以在脑海里先想想这样一个简单的过程在ES5写起来就要有多层的嵌套。那我们现在用promise来实现。
let state = 1; // 状态,表示是否完成
let step1 = (resolve, reject)=>{
console.log('1、洗菜做饭。');
if (state == 1){
resolve('1 完成');
}else{
reject('1 失败');
}
}
let step2 = (resolve, reject)=>{
console.log('2、坐下来吃饭。');
// state = 2; // 此操作是为了模拟第二步失败
if (state == 1){
resolve('2 完成');
}else{
reject('2 失败');
}
}
let step3 = (resolve, reject)=>{
console.log('3、收拾桌子洗碗。');
if (state == 1){
resolve('3 完成');
}else{
reject('3 失败');
}
}
// 三个then代表三个步骤的回调处理
new Promise(step1).then((val)=>{
console.log('step1:', val);
return new Promise(step2); // 第一步执行完毕,执行第二步
}).then((val)=>{
console.log('step2:', val);
return new Promise(step3); // 第一步执行完毕,执行第二步
}).then((val)=>{
console.log('step3:', val);
// 第三步执行完毕,将不再做任何操作
});
Promis在现在的开发中使用率算是最高的,而且你面试前端都会考这个对象,大家一定要掌握好。