用生命谱写代码的赞歌

0%

微信小程序全局变量的设置、修改和使用

分析原因

在 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.js 页面
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 // 通过接口请求获取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
// index.js 使用页面
const app = getApp()

Page({
data: {
global_mask: app.globalData.global_mask // 获取全局变量值
},
onLoad: function() {
app.getMaskState().then(res => { // 执行全局方法
this.setData({
global_mask: res
})
})
}
})