Promise
1、概念
Promise是异步编程的一种解决方案,从语法上讲,Promise是一个对象,它可以获取异步操作的消息
2、优点
① 可以避免多层异步调用嵌套问题(回调函数)
② Promise 对象提供了简洁的API,使得控制异步操作更加容易
3、基本用法
实例化Promise对象,构造函数中传递函数,该函数中用于处理异步任务
new Promise(function(resolve, reject){ })
resolve和reject两个参数用于处理成功和失败两种情况
4、基本逻辑
如果想让Promise成功执行下去,需要执行resolve,如果让它失败执行下去,需要执行reject
resolve进then,reject进catch
var p = new Promise(function(resolve,reject){
// 这里用于实现异步任务
// 成功时调用resolve()
// 失败时调用reject()
});
p.then(
function (data) {
// 从resolve得到正常结果
console.log(data);
})
.catch(
function (info) {
// 从reject得到错误信息
console.log(info);
})
5、终止执行链
如果想终止在某个执行链的位置,可以用Promise.reject(new Error())
new Promise(function(resolve, reject) {
resolve(1)
}).then(result => {
return result + 1
}).then(result => {
return result + 1
}).then(result => {
// 终止掉程序,不再进入下一个then而是进入catch
return Promise.reject(new Error(result + '失败'))
// return result + 1
}).then(result => {
return result + 1
}).catch(error => {
alert(error)
})
6.三种状态
- pending 待定 初始状态
- fulfilled 已兑现 当resolve执行后的状态
- rejected 已拒绝 当reject执行后的状态
注意:状态一旦改变不可再次修改,不可逆