微信小程序中异步请求是非常普遍使用的,但有时候日志打印出来的对象却为空,点开三角展开查看详情的时候却有值。
遇到这种情况卡了很久,想到的是使用缓存获取再读取的方式。
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
})
})
},