收藏
回答

小程序有办法同步request吗

问题模块
API和组件

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

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

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

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

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

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

最后一次编辑于  2017-12-04  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • 林超
    林超
    2017-12-04

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


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

    2017-12-04
    赞同
    回复
  • 嗯
    2017-12-05

    如果 几个请求是同步发生的, 那么 在 request 之前设置一下 isGetting, if (isGetting) {

        that.data.getTagCb.push(cb)

        return

    }

    2017-12-05
    赞同
    回复
  • 嗯
    2017-12-05


    /**
         * 获取用户的企业信息
         */
        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

    2017-12-05
    赞同
    回复