公司这个项目有的页面请求接口多的时候 会请求3-6个 但是使用wx.showLoading的时候 只要第一个接口请求完毕 就会执行wx.hideLoading 这样有一个接口先执行完就会导致loading没有了 请问可以给wx.showLoading指定变量,wx.hideLoading关闭指定的loading吗 或者有其他的骚操作 因为业务逻辑问题 接口也不能合并 只能单个请求
框架类型 | 问题类型 | API/组件名称 | 终端类型 | 微信版本 | 基础库版本 |
---|---|---|---|---|---|
小程序 | Bug | wx.showLoading | 客户端 | 所有 | 所有 |
公司这个项目有的页面请求接口多的时候 会请求3-6个 但是使用wx.showLoading的时候 只要第一个接口请求完毕 就会执行wx.hideLoading 这样有一个接口先执行完就会导致loading没有了 请问可以给wx.showLoading指定变量,wx.hideLoading关闭指定的loading吗 或者有其他的骚操作 因为业务逻辑问题 接口也不能合并 只能单个请求
3 个回答
test(e) {
var that = this
that.setData({
loadData: true
})
wx.showLoading({
title: '数据下载中',
})
var url1 = that.data.editData.shop_swiperpic
var url2 = that.data.editData.shop_detailpic
var url3 = that.data.editData.shop_logopic
var a = function () {
return new Promise(function (resolve, reject) {
if (!url1.length) {
resolve("a")
} else {
util.downloadSaveFiles({
urls: url1,
success: function (res) {
resolve("a")
},
fail: function (e) {
console.info("下载失败");
}
}, that, 'swiperpic', '正在下载轮播图片');
}
})
}
var b = function (data) {
return new Promise(function (resolve, reject) {
if (!url2.length) {
resolve(data + 'b')
} else {
util.downloadSaveFiles({
urls: url2,
success: function (res) {
resolve(data + 'b')
},
fail: function (e) {
console.info("下载失败");
}
}, that, 'detailpic', '正在下载详情图片');
}
})
}
var c = function (data) {
return new Promise(function (resolve, reject) {
if (!url3.length) {
resolve(data + 'c')
} else {
wx.showLoading({
title: '即将完成下载',
})
util.downloadSaveFiles({
urls: url3,
success: function (res) {
resolve(data + 'c')
},
fail: function (e) {
console.info("下载失败");
}
}, that, 'logopic', '正在下载商家LOGO');
}
})
}
function reduce(arr) {
var sequence = Promise.resolve()
arr.forEach(function (item) {
sequence = sequence.then(item)
})
return sequence
}
reduce([a, b, c])
.then(function (data) {
setTimeout(function(){
wx.showLoading({
title: '数据下载完成',
})
that.edit()
},1000)
})
.catch(function (e) {
console.log(e)
})
},
我们的逻辑大概就是这样子,
嗯嗯 谢谢
请问在app.js里面进行网络请求,然后主界面进行网络请求。而且网络请求全都是封装的promise。showloading 和 hideloading 都封装在请求里面了。这样怎么处理?
用个蠢方法设置一个number=0;每个接口调用成功后number+1;然后在成功里面判断这个number==你调用的接口数,那就表示你的接口全部调用成功了。。。或者用promise