小程序
小游戏
企业微信
微信支付
扫描小程序码分享
项目里需要从后台请求一些标签,这么标签会在多处被使用,所以请求后存入缓存.
但是这些标签在utils/xx.js内,和app.js内还有index.js内都有调用.
因为request是异步请求,所以在调用时这么标签是还没有在回调里存入缓存,于是就会报错.
因为是多个文件内都使用到这些标签,并且在打开小程序时这么文件都会执行.
我想来想去,要么同步请求标签存入缓存要么就是在每个文件都异步请求一次.
目前采用的后者的方法,有没有大神有更好的方法.
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
网络请求一定是经过网络的,这里没有办法做到同步的
而且就算做到同步,难道在请求的过程中页面就卡死没有反馈么?这个体验非常不好的吧
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
异步问题的终极解决方案:https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013
如果 几个请求是同步发生的, 那么 在 request 之前设置一下 isGetting, if (isGetting) {
that.data.getTagCb.push(cb)
return
}
/**
* 获取用户的企业信息
*/
getFactoryInfo(cb) {
let that =
this
if
(that.globalData.myFactory) {
cb && cb(that.globalData.myFactory)
let infoOpt = {
url:
'/circle/factories/my'
,
type:
'GET'
let infoCb = {}
infoCb.success =
function
(data) {
that.globalData.myFactory = data.myFactory || {}
sendAjax(infoOpt, infoCb,
() {
that.getFactoryInfo(cb)
})
},
app.js
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
网络请求一定是经过网络的,这里没有办法做到同步的
而且就算做到同步,难道在请求的过程中页面就卡死没有反馈么?这个体验非常不好的吧
异步问题的终极解决方案:https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013
如果 几个请求是同步发生的, 那么 在 request 之前设置一下 isGetting, if (isGetting) {
that.data.getTagCb.push(cb)
return
}
/**
* 获取用户的企业信息
*/
getFactoryInfo(cb) {
let that =
this
if
(that.globalData.myFactory) {
cb && cb(that.globalData.myFactory)
return
}
let infoOpt = {
url:
'/circle/factories/my'
,
type:
'GET'
}
let infoCb = {}
infoCb.success =
function
(data) {
that.globalData.myFactory = data.myFactory || {}
cb && cb(that.globalData.myFactory)
}
sendAjax(infoOpt, infoCb,
function
() {
that.getFactoryInfo(cb)
})
},
app.js