时间:2019-05-07 来源:小程序工厂
这问题见过好多好多遍了。。
app.js
onLaunch:function(){
wx.request({
success: res=>{
wx.setStorage({
key:'xxx',
value:res.xxxxx
})
typeof(this.callBack) && this.callBack(res.xxxxx)
}
})
}
page.js
const app = getApp()
onLoad: function(){
wx.getStorage({
key:'xxx',
success: res=>{
this.deal(res)
},
fail: ()=>{
app.callBack = this.deal
}
})
}
就page.js get的时候用异步么
success: res=>{
this.deal(res)
}, fail: ()=>{
app.callBack = this.deal
}没看懂
取的到,就用。取不到,就传个回调给app.js
用同步也一样
onLoad: function(){ let ret = wx.getStorageSync('xxx') if(ret){ this.deal(res) } else { app.callBack = this.deal }}
我调用了app的一个函数 return undefined
不懂。。贴下代码呢
我目前是这样解决的 onload时setData 如果是空 那我一段时间后再次setData
gameType 在哪里设的值呢?不用截图,直接粘贴代码 我好复制了直接写给你
app.js
onLaunch: function () {
if (!wx.getStorageSync('gameType')) {
it.setSto('gameType')
}
},
setSto:function(e){
const it = this
console.log(e)
switch(e){
case 'gameType':
wx.cloud.callFunction({
name:'get',
data:{
act:'gameType'
},
success:function(e){
wx.setStorage({
key: 'gameType',
data: e.result
})
return e.result
}
})
break;
}
}
贴下刚刚 onLoad的代码呢,文本
//index.js
onLoad: function (options) {
let it = this
it.setData({
gameType: wx.getStorageSync('gameType')
})
if (it.data.gameType==''){
setTimeout(function(){
it.setData({
gameType: wx.getStorageSync('gameType')
})
if (it.data.gameType == ''){
it.onLoad()
}
},1234)
}
},
//app.js
噗嗤。。。写漏了
typeof(it.callBack) == 'function' && ........
我感觉这比我setTimeout更麻烦
只要你能保证,在你setTimeout的时间范围内,接口能回来,就可以。
不过 我觉得再过段时间,或者1、2年后,你会觉得我这样写更好。。flag立这里了~
if (wx.getStorageSync('gameType')){
it.setData({ gameType:wx.getStorageSync('gameType')})
}else{
app.callBack = (value) => {
this.setData({
gameType: value
})
}
}
typeof (it.callBack) && it.callBack(e.result)
有没有这个的文档
app.js
typeof (it.callBack) == 'function' && it.callBack(e.result)
typeof (it.callBack2) == 'function' && it.callBack2(e.result)
...
index.js
app.callBack = (value) => {this.setData({gameType: value})}
app.callBack2 = (value) => {this.setData({gameType: value})}