ES6 promise

作用:就是解决异步回调问题的

let promise = new Promise(function(resolve, reject){

})
promise.then(res => console.log(res), err => console.log(err))
promise.catch(err => console.log(err))

一般不用then的第二个参数,直接用catch
then/catch返回的都是promise

let p1= Promise.resovle('aa');//将现有的东西转成一个promise对象,resolve状态的
p1.then(res => console.log(res));  //res=='aaa'

等价于

let p1 = new Promise(resolve => resolve('aaa'));
p1.then(res => console.log(res));  //res=='aaa'
let p2 = Promise.reject('aa');//将现有的东西转成一个promise对象,reject状态的

then中回调函数,如果返回的是非promise对象,产生的promise对象的状态为resolved,结果值为返回值;如果返回的是promise对象,状态与返回的promise对象一致。

Promise.all([p1, p2, p3]);把promise打包,扔到一个数组里,打包完还是promise对象
必须确保所有的promise对象都是resolve状态,而失败的时候则返回最先被reject失败状态的值
Promise.race([R1, R2, R3]);哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是失败状态。

demo模拟:

<script>
	let status = 1;
	let userLogin = (resolve, reject) =>{
		setTimeout{() => {
			if(status === 1){
				resolve({data:'xxx', msg:'登录成功', token:'dfdgadg'});
			}else{
				reject('失败了');
		        }
		}, 2000};
	};
	let getUserInfo = (resolve, reject) => {
		setTimeout{() => {
			if(status === 1){
				resolve({data:'xxx', msg:'获取用户信息成功', token:'dfdgadg'});
			}else{
				reject('失败了');
			}
		}, 2000};
	};
	new Promise(userLogin).then(res => {
		console.log(res.msg);
		return new Promise(getUserInfo);
		}).then(res => {
		console.log(res.msg);
	})
<script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值