小程序
小游戏
企业微信
微信支付
扫描小程序码分享
有什么方法让onLaunch里面的ajax运行运行完 再运行各个页面里面的ajax? 如果实在没办法 只能把 onloaunch里面的放的ajax放到这个页面里面了
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
基本就是写个方法返回缓存或新的Promise,控制异步流程,避免重复请求
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
App({
onLaunch(){
this.getAppConfig() //onLaunch提前调用
},
getAppConfig(retry){
if(retry) this._getAppConfigPromise = null
return this._getAppConfigPromise || (this._getAppConfigPromise = new Promise((resolve,reject)=>{
wx.request({
//balabala....
success({data}){
resolve(data)
fail({errMsg}){
this._getAppConfigPromise = null //请求失败下次调用自动重试,也可以去掉这行自己处理重试逻辑
reject(errMsg)
}
})
}))
//各个页面
getApp().getAppConfig().then(data=>{
//getAppConfig得到结果
},err=>{
//getAppConfig出错
onLaunch的ajax弄成promise(其实是方便,用cb都可以),然后赋值给app.mainState(随便命名),然后各个页面里的要访问ajax前,调用app.mainState().then(function(){ page.ajax() }); 你这种需求要开发方便的话我想到就是这个。但得处理好引用释放的问题
你单独把这个方法抽离出来,哪个页面要引用的时候调用就行了
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
基本就是写个方法返回缓存或新的Promise,控制异步流程,避免重复请求
App({
onLaunch(){
this.getAppConfig() //onLaunch提前调用
},
getAppConfig(retry){
if(retry) this._getAppConfigPromise = null
return this._getAppConfigPromise || (this._getAppConfigPromise = new Promise((resolve,reject)=>{
wx.request({
//balabala....
success({data}){
resolve(data)
},
fail({errMsg}){
this._getAppConfigPromise = null //请求失败下次调用自动重试,也可以去掉这行自己处理重试逻辑
reject(errMsg)
}
})
}))
}
})
//各个页面
getApp().getAppConfig().then(data=>{
//getAppConfig得到结果
},err=>{
//getAppConfig出错
})
onLaunch的ajax弄成promise(其实是方便,用cb都可以),然后赋值给app.mainState(随便命名),然后各个页面里的要访问ajax前,调用app.mainState().then(function(){ page.ajax() }); 你这种需求要开发方便的话我想到就是这个。但得处理好引用释放的问题
你单独把这个方法抽离出来,哪个页面要引用的时候调用就行了