分析原因
在 app.js 中定义一个全局方法,在使用的时候执行这个全局方法,获取返回值来改变全局变量的值。废话不多说,下面是具体解决方法:
在 app.js 页面里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| App({ globalData: { isLoad: false, global_mask: false }, onLaunch: function() { this.getMaskState() }, getMaskState() { return new Promise((resolve, reject) => { if (this.globalData.isLoad) { resolve(this.globalData.global_mask) } else { let data = {} maskRequest({data}).then(res => { this.globalData.global_mask = res.data.global_mask this.globalData.isLoad = true resolve(this.globalData.global_mask) }).catch(err => { reject(err) }) } }) } })
|
在使用页面里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| const app = getApp()
Page({ data: { global_mask: app.globalData.global_mask }, onLoad: function() { app.getMaskState().then(res => { this.setData({ global_mask: res }) }) } })
|