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('失败');}}//调用1p.then(res=>{console.log(res');} , err=>{console.log(err);});//调用2p.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
