html52.com
我爱小程序-开发者交流社区

小程序有办法同步request吗

问题模块
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

林超:

网络请求一定是经过网络的,这里没有办法做到同步的


而且就算做到同步,难道在请求的过程中页面就卡死没有反馈么?这个体验非常不好的吧

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

真正的个人免签约支付接口

云免签H5支付