问题模块 |
---|
API和组件 |
项目里需要从后台请求一些标签,这么标签会在多处被使用,所以请求后存入缓存.
但是这些标签在utils/xx.js内,和app.js内还有index.js内都有调用.
因为request是异步请求,所以在调用时这么标签是还没有在回调里存入缓存,于是就会报错.
因为是多个文件内都使用到这些标签,并且在打开小程序时这么文件都会执行.
我想来想去,要么同步请求标签存入缓存要么就是在每个文件都异步请求一次.
目前采用的后者的方法,有没有大神有更好的方法.
网友回复
嗯:
如果 几个请求是同步发生的, 那么 在 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
林超:
网络请求一定是经过网络的,这里没有办法做到同步的
而且就算做到同步,难道在请求的过程中页面就卡死没有反馈么?这个体验非常不好的吧