js的sync调用:没有使用async await时异步调用的坑
作者:互联网
js的sync调用:没有使用async await时异步调用的坑,看代码:
//----------------------------
//错误示例:
//doSomething()因为某些原因无法使用async
var globalData = 'abc'
onShow(){
this.doSomething()
},
doSomething() {
this.saveData()
globalData = '123'
setTimeout(() => {
//延时模拟执行
console.log('globalData:', wx.getStorageSync('globalData')) //获取到的数据为123,错误
}, 2000)
},
async saveData() {
setTimeout(() => {
//延时模拟执行
wx.setStorageSync('globalData', globalData) //
}, 1000)
},
如何避坑?继续看代码:
//----------------------------
//正确示例:
var globalData = 'abc'
var globalDataOld
doSomething() {
globalDataOld = this.copyObj(globalData) //深度复制
this.saveData()
globalData = '123'
setTimeout(() => {
//延时模拟执行
console.log('globalData:', wx.getStorageSync('globalData')) //获取到的数据为abc,正确
}, 2000)
},
async saveData() {
setTimeout(() => {
//延时模拟执行
wx.setStorageSync('globalData', globalDataOld) //使用复制的原有数据,与新数据无关
}, 1000)
},
copyObj(obj){
return JSON.parse(JSON.stringify(obj))
},
(全文完)
标签:调用,doSomething,await,sync,globalData,saveData,async,setTimeout,wx 来源: https://blog.csdn.net/ycjnx/article/details/117922117