Promise 对象的出现很好的解决了回调地狱的问题,在使用ES5开发时多层嵌套回调,代码层次过多,很难进行维护和二次开发。
那如何使用Promise 对象,你可以想象他是一种承诺,当它成功时执行一些代码,当它失败时执行一些代码。它更符合人类的行为思考习惯,而不在是晦涩难懂的冰冷语言。
Promise 的基本用法
先来模仿一个多步操作的过程,就以用户为例,要经过三个步骤。
这个过程有一定的顺序,必须保证上一步完成,才能顺利的进行下一步。
- 注册
- 登陆
- 实名认证
let state = 1;
function step1(resolve, reject) {
console.log("1:开始,注册");
if (state == 1) {
resolve('注册成功。');
} else {
reject('注册失败!');
}
}
function step2(resolve, reject) {
console.log("2:开始,登陆");
// state = 2;
if (state == 1) {
resolve('登陆成功。');
} else {
reject('登陆失败!');
}
}
function step3(resolve, reject) {
console.log("3:开始,实名认证");
if (state == 1) {
resolve('实名认证成功。');
} else {
reject('实名认证失败!');
}
}
new Promise(step1).then(function (val) {
console.log(val);
return new Promise(step2);
}).then(function (val) {
console.log(val);
return new Promise(step3);
}).then(function (val) {
console.log(val);
return val;
});
Promise 现在开发使用率是最高的,而且在面试都会考到这个对象。