Promist的异步处理

比较常用的场景是同时调用多个接口,要求完成第一个接口执行完后再调用第二个接口。

new Promise((resolve, reject) =>{
	setTimeout(()=>{
		console.log('000');
		resolve('000')    //这里是第一个业务逻辑处理完后调用resolve()进行下一个then方法
	},2000)
}).then(res =>{
	return new Promise((resolve,reject) =>{   //第一种resolve和reject写法
		setTimeout(() =>{
			console.log(res + '111');
			resolve(res + '111');    //这里是第二个业务逻辑处理完后调用resolve()进行下一个then方法
		},3000)
	})
}).then(res =>{
	console.log(res + '222');
	
	//这里是第三个业务逻辑处理完后调用reject()进行catch错误方法
	return Promise.reject('err msg')  //第二种reject写法   
	
	//这里是第三个业务逻辑处理完后调用resolve()进行下一个then方法
	// return Promise.resolve(res + '2222')  //第二种resolve写法
}).then(res =>{     //then是调用resolve()后触发的函数
	console.log(res + '333');
}).catch(err =>{    //catch是调用reject()后触发的函数
	console.log(err);
})

如果要多个异步方法处理完后再执行下一步,可使用,Promist.all()。

Promise.all([
	new Promise((resolve, reject) =>{   //第一个异步
		setTimeout(()=>{
			console.log('1111');
			resolve({name: 'why', age: 18})
		},3000)
	}),
	new Promise((resolve, reject) =>{    //第二个异步
		setTimeout(()=>{
			console.log('2222');
			resolve({name: 'why2', age: 19})
		},2000)
	})
]).then(results =>{
	console.log(results);    //两个异步处理完才执行
})

也可以写成下面的方式:

Promise.all([
	this.test1(),
	this.test2(),
	this.test3(),
	]).then((result) => {
		//这里就是所有异步执行完后会执行的地方
		console.log('成功返回执行', result);
	}).catch(err=>{
		console.log('异常返回执行', err);
});


test1(){
	return new Promise((resolve, reject) => {
		setTimeout(()=>{
			console.log('第一个');
			resolve('test1');
		}, 3000)
	});
},
test2(){
	return new Promise((resolve, reject) => {
		setTimeout(()=>{
			console.log('第二个');
			resolve('test2');
			// reject('err')    //reject执行catch方法
			//这里因为
		}, 2000)
	});
},
test3(){
	return new Promise((resolve, reject) => {
		setTimeout(()=>{
			console.log('第三个');
			resolve('test3');
		}, 1000)
	});
},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值