小程序 请求数据打印对象为空与异步回调的解决办法

微信小程序中异步请求是非常普遍使用的,但有时候日志打印出来的对象却为空,点开三角展开查看详情的时候却有值。
遇到这种情况卡了很久,想到的是使用缓存获取再读取的方式。
wx.setStorageSync存储到本地,再用异步方法wx.getStorage(Object object)去获取,但是有很多的缺陷,后期如果需要实时刷新数据,还牵引到其他问题在开发中十分不友好。

尝试了不少方法,发现另外一种解决方法。
获取的数据通常放在一个空的数组变量中,而在要获取的数组对象后面追加加一个静态对象或者数组,问题就能够解决。(但是具体原因还没去深究)

不多说,上代码

var array = {
  Id: "xxx",
  datas: [],
  arrayTest: [1, 2, 3]
}
//这段代码中,datas数组是用于存放request请求的数据
//而arrayTest数组则是追加的静态数组,存在值即可
.....
function getArray(){
	 return array
}
.....
module.exports = {
	getArray:getArray
}
最后再在全局中调用或者功能页中,调用方法便可以成功获取

异步数据请求
需要设置一个回调函数 进行获取

function invoke(a, cb){
  wx.request ( {
    url: url,
    data: {
    },
    header: {
    },
    method: ,
    success: function (res) { 
      ........
      cb(ress)
    },
  })
}

在页面中调用获取数据

  Click1: function(e) {
    var that = this
    xxxxx.invoke('需要传入的参数', function(result) {
      that.setData({
        arrays: result.list
      })
    })
  },

你可能感兴趣的:(Applets)