Promise对象着重解决JS编程中异步回调问题,例如ajax请求所产生的一系列回调操作
ajaxSend(function() {
ajaxSend(function() {
ajaxSend({
....
});
})
});
语法
new Promise(resolve , reject) {
//resolve , 成功的时候调用
//reject,失败的时候调用
}
简单的实例
let a = 10;
let p = new Promise(resolve , reject) {
if(a>=10) {
resolve('成功');
} else {
reject('失败');
}
}
//调用1
p.then(res=>{
console.log(res');
} , err=>{
console.log(err);
});
//调用2
p.then(function(res) {
console.log(res);
}).catch(function(err) {
console.log(err);
});
方法
Promise.resolve()
返回一个成功状态的Promise对象
//resolve: 返回一个成功状态的Promise对象
Promise.resolve('成功');
//等价于
new Promise(resolve , reject) {
resolve('成功');
}
Promise.reject()
返回一个失败状态的Promise对象
//resolve: 返回一个成功状态的Promise对象
Promise.reject('失败');
//等价于
new Promise(resolve , reject) {
reject('失败');
}
Promise.all()
批量执行Promise任务,然后在结果组成一个数组返回,而且必须所有的Promise都是成功状态
let p1 = Promise.resolve('成功1');
let p2 = Promise.resolve('成功2');
let p3 = Promise.resolve('成功3');
Promise.all([p1,p2,p3]).then(function(res) {
console.log(res); //["成功1" , "成功2" , "成功3"]
let [res1 , res2 , res3 ] = res; //解构获取
}).catch(function(err) {
console.log(err); //['失败1']
});
Promise.race()
批量执行Promise任务,然后在结果组成一个数组返回,只要遇到一个resolve状态就返回
let p1 = Promise.resolve('成功1');
let p2 = Promise.reject('失败1');
Promise.race([p1,p2]).then(function(res) {
console.log(res); //["成功1"]
}).catch(function(err) {
console.log(err); //['失败1']
});
//最终输出结果: 成功1