Promise解决连续网络请求
在调用API时,当遇到连续调用,并且需要上一个API调用的结果,或者必须等上一个请求完成后才能继续请求,通常的延时函数并不能解决办法,因为如果上一个请求较长,超过设置的等待时间,同样会出现问题,所以通常会使用callback()回调函数,但是在代码的语义理解上会比较困难,尤其是多重的调用会形成所谓的“回调地狱”。因此,可以采用Promise对象解决这种网络异步请求问题。
在wepy框架中默认对小程序提供的API进行了Promise处理
wepy官方文档https://tencent.github.io/wepy/document.html#/?id=%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83
使用Promise。 框架默认对小程序提供的API全都进行了 Promise 处理,甚至可以直接使用async/await等新特性进行开发
示例:
var this = me;
wepy.request({
//调用apiA
})
.then(res =>{
me.dataA = res.data;
me.apply();
return wepy.request({
//调用apiB
})
})
.then(res =>{
me.dataB = res.data;
me.apply();
})
//如果需要继续调用,则继续引用
这样写的话代码就完全可以从字面意思上来理解整个网络请求流程,先调用A,当A调用完之后,再调用B,整个过程清晰明了,并且更符合编程逻辑。