Promise简介
Promise是异步编程,它的出现是用来解决回调地狱(callback),Promise对象用来封装一个异步操作并可以获取其结果。
基本语法:
new Promise(function (resolve,reject) {
......
})
Promise的三种状态
- pending:进行中,初始状态
- resolved:成功
- rejected:失败 如图表示了Promise的状态:
Promise的作用
在没有Promis之前,我们在回调中有另一个异步操作的时候,我们就只能使用嵌套的方式来解决
//地狱回调
setTimeout(function () { //第一层
console.log('1');
setTimeout(function () { //第二层
console.log('2');
setTimeout(function () { //第三层
console.log('3');
setTimeout(function () { //第四层
console.log('4');
setTimeout(function () { //第五层
console.log('5');
}, 1000)
}, 2000)
}, 3000)
}, 4000)
}, 5000)
现在有了Promise我们可以这样解决
function fn(num) {
let p = new Promise(function (resolve, reject) {
//处理异步任务
let flag = true;
setTimeout(function () {
if (flag) {
resolve(num)
}
else {
reject('操作失败')
}
})
})
return p;
}
fn('0').then((data) => {
console.log(data);
return fn('1');
}).then((data) => {
console.log(data);
return fn('2')
}).then((data) => {
console.log(data);
return fn('3')
}).then((data) => {
console.log(data);
return fn('4')
}).then((data) => {
console.log(data);
return fn('5')
}).catch((data) => {
console.log(data);
})
Promise使我们代码结构变得简单,易懂,易维护,使异步代码同步化,这就是Promise的作用与用法