ES6之Promise

1.基本用法

let p =new Promise(function (resolve, reject) {
    // resolve("成功回调");
    reject("失败回调")
});
p.then((data)=>{
    console.log("成功:"+data); 
},(err)=>{
    console.log("失败:"+err); // 失败:失败回调
});

2.then中返回Promise对象

如果then中返回了一个promise 会将promise的结果继续传给第二then中(如果结果是将状态改成成功就走下一个then的成功回调,状态改为失败就走下一个then的失败回调)

function write(number){
	return new Promise(function(resolve,reject){
		if(number>=60){
			resolve("成绩及格")
		}else{
			reject("成绩不及格")
		}
	})
}
let p = write(70);
p.then(data=>{
	console.log(data); // 成绩及格
	return write(50);
},err=>{
	console.log(err);
}).then(data=>{
	console.log(data);
},err=>{
	console.log(err); // 成绩不及格
})

3.then中返回普通值

第一个then不管是走成功还是失败的回到函数,只要返回一个普通值(不抛出错误或者返回promise), 都会执行下一个then的成功的回调。

let p1 = new Promise(function (resolve, reject) {
    resolve("成功p1");
});
/* 返回一个字符串,执行下一个then成功的回调 */
p1.then((data) => {
    console.log(data); // 成功p1
    return "普通值"
}, (err) => {
    console.log(err);
}).then((data) => {
    console.log(data); // 普通值
}, (err) => {
    console.log(err);
});

let p2 = new Promise(function (resolve, reject) {
    resolve("成功");
});
/* 在then成功回调中抛出错误,使其执行下一个then的失败回调 */
p2.then((data) => {
    console.log(data); //成功
    throw "抛出错误字符串"
}, (err) => {
    console.log(err);
}).then((data) => {
    console.log(data);
}, (err) => {
    console.log(err); // 抛出错误字符串
});

4.catch

当then中没有设置失败回调,就会找到catch

let p = new Promise(function(resolve,reject){
	reject("失败")
});
p.then(data=>{
	console.log(data);
}).catch(err=>{
	console.log("catch"+err); // catch失败
})

5.all

Promise.all方法执行后返回的依旧是promise, all两个全成功才表示成功

function test(score){
	return new Promise(function(resolve,reject){
		if(score>=60){
			resolve(score);
		}else{
			reject(score);
		}
	});
}
let p = Promise.all([test(70),test(80)]);
p.then(data=>{
	console.log(data) // [70,80] 数组
	console.log("成绩及格") // 成绩及格
}).catch(err=>{
	console.log(err); // Number类型
	console.log("成绩不及格")
})

6.Promise静态方法

Promise.resolve([1,2,3]).then(function(data){
    console.log(data); //[1,2,3]
});

Promise.reject([1,2,3]).then(null,function(err){
    console.log('err',err) //err [ 1, 2, 3 ]
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值