开发中遇到打印出来的数据为上次操作数据,非本次操作产生数据的异常。
原因:
1、接口顺序错误,比如应该等a接口请求完成后再去发送事件去更新b数据,如
function getData(val){
this.$emit('success',val) // 更新b数据
await getList(); // 请求a接口
}
错误,应该请求完接口再去发送事件更新数据
function getData(val){
await getList(); // 请求a接口
this.$emit('success',val) // 更新b数据
}
2、b数据为深拷贝,且未在a数据更新完成后再去操作,如
function getData(){
this.initJson() // 更新数据,更新里有testShowJson
this.getTetx() // 更新b数据,b数据更新依赖initJson里的testShowJson
}
function getText(){
const text = this.textShowJson
... // 一系列逻辑操作
await saveText(text) // 更改数据接口里的text
}
错误,应该等待initJson执行完再去执行下一变更数据的函数
async function initJson(){...}
function getData(){
await this.initJson().then(()=>{
this.getText()
})
}
另一种方法,使用监听,监听textShowJson的变化就去执行getText()
watch: {
'textShowJson': {
handler(val) : {
this.getText();
}
}
}