promise链实战经验

怎样创建一个promise

结合项目 一般的使用场景 都是使用网络请求之后 需要同步做的事情,话不多说 上代码

FunAll.js ------> 函数集合


const getCouponList = () => { 
	return new Promise((resolve, reject) => {
	//这里放入网络请求
		Http.post('/coupon/getCouponInfo',[params],).then(source => {
			//拿到source函数 resolve出来 在需要调用getCouponList 函数的地方可以直接使用 如果这个函数在多个调用函数里面有相同的业务逻辑 当然也可以在这里把业务逻辑写好 然后resolve(true) ,具体怎么使用看场景。
			resolve(source);
		}).catch((error) => {
			//执行 catch到错误的业务逻辑 比如弹框告诉网络拥挤什么的。。。
			reject(error);// resolve(false)与resolve(true) 对应
		})
	})
}
const getCouponListAfterFun = () => { 
	return new Promise((resolve, reject) => {
		Http.post('/coupon/getCouponListAfter ',[params],).then(source => {
			resolve(source);
		}).catch((error) => {
			reject(error);
		})
	})
}
export {
	getCouponList ,
	getCouponListAfterFun 
}




coupon.js----->调用函数的页面
先导入 FunAll.js

  • 一个promise
getCouponList().then((res) => {
    if (res) {
     //拿到数据之后 进行业务逻辑操作
    }
  })
  1. 多个promise
  • [ 1] 假设 getCouponListAfterFun 在getCouponList之后执行
getCouponList().then((res) => {
    if (res) {
     //拿到数据之后 进行业务逻辑操作
     return getCouponListAfterFun ();//return出改数据
    }
  }).then((res) => {
    if (res) {
     //拿到数据之后 进行业务逻辑操作
    }
  })------------------------------》如果还有需要同步的函数 继续then
  • [ 2] 假设 需要限制性一些不涉及到网络请求的业务逻辑 但是 之后需要一系列网络请求
    这种情况下总不能一层套一层使用网络请求吧,所以还是要用大promise链,但是链要用的有规矩 不要一个promise里面套promise 最好都放到then里面

以下写法不可取

~~fun.then(()=>{
	fun1.then(()=>{
		fun2.then(()=>{
			......
		})
	})
})~~ 

以下是规范&一目了然的写法

fun.then(()=>{
	return fun1
}).then(()=>{
	return fun2
}).then(()=>{
	return fun3
}).then(()=>{
	return fun4
})....

如果一开始没有业务逻辑 之后进行到某一步需要使用promise链,比如:

if(coustomer == 1){
	........//一系列操作执行
	//执行promise链
	fun.then(()=>{
	return fun1
	}).then(()=>{
		return fun2
	}).then(()=>{
		return fun3
	}).then(()=>{
		return fun4
	})
}

当然也可以这样写 不涉及到网络请求的业务逻辑 返回成一个promise对象 这样写会更加规范也更易读懂。

Promise.resolve().then(()=>{
	if(coustomer == 1){
	........//一系列操作执行
	return fun
	}
}).then(()=>{
	return fun1
}).then(()=>{
	return fun2
}).then(()=>{
	return fun3
}).then(()=>{
	return fun4
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值