小程序有办法同步request吗
发布于 4 年前 作者 leichao 2384 次浏览 来自 问答

项目里需要从后台请求一些标签,这么标签会在多处被使用,所以请求后存入缓存.

但是这些标签在utils/xx.js内,和app.js内还有index.js内都有调用.

因为request是异步请求,所以在调用时这么标签是还没有在回调里存入缓存,于是就会报错.

因为是多个文件内都使用到这些标签,并且在打开小程序时这么文件都会执行.

我想来想去,要么同步请求标签存入缓存要么就是在每个文件都异步请求一次.

目前采用的后者的方法,有没有大神有更好的方法.

3 回复

如果 几个请求是同步发生的, 那么 在 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

回到顶部