小程序
小游戏
企业微信
微信支付
扫描小程序码分享
公司这个项目有的页面请求接口多的时候 会请求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) {
},
fail: function (e) {
console.info("下载失败");
}
}, that, 'swiperpic', '正在下载轮播图片');
var b = function (data) {
if (!url2.length) {
resolve(data + 'b')
urls: url2,
}, that, 'detailpic', '正在下载详情图片');
var c = function (data) {
if (!url3.length) {
resolve(data + 'c')
title: '即将完成下载',
urls: url3,
}, 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(){
title: '数据下载完成',
that.edit()
},1000)
.catch(function (e) {
console.log(e)
我们的逻辑大概就是这样子,
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
嗯嗯 谢谢
请问在app.js里面进行网络请求,然后主界面进行网络请求。而且网络请求全都是封装的promise。showloading 和 hideloading 都封装在请求里面了。这样怎么处理?
用个蠢方法设置一个number=0;每个接口调用成功后number+1;然后在成功里面判断这个number==你调用的接口数,那就表示你的接口全部调用成功了。。。或者用promise
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
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