案例:
1、问题:
以下代码中,if 和 else里面都有以下两句话,能不能把这两句话放在else之后执行?
//关闭对话框 this.dialogFormVisible = false; //刷新数据 this.list();
save() {
//修改和新增显示的是同一个表单,点击确定会触发同一个方法
//所有这里需要判断是 修改还是新增
if (this.form.id){//修改时会把id传给表单
//是修改
request.post('api/furn/updata', this.form)
.then(res => {
console.log(res);
if (res.code==200){
//弹出消息框
this.$message({
message: '修改成功',
type: 'success',
});
}else if (res.code == 400) {
//弹出消息框
this.$message.error('修改失败');
}
//关闭对话框
this.dialogFormVisible = false;
//刷新数据
this.list();
})
}else {
request.post('api/furn/save', this.form)
.then(response => {
console.log(response);
//关闭对话框
this.dialogFormVisible = false;
//刷新数据
this.list();
})
}
}
2、答案是:
不能,这样做的后果是,修改数据后,页面得到的数据不是最新的。不是调用了list()方法刷新数据吗,为什么得到的数据不是修改之后的呢?
因为这里本质上使用的是Ajax异步请求,如果将上面的两条语句放在else之后。因为是异步请求,所有不会等Ajax请求执行完 才往下执行list()方法,也就是说,在还没修改好数据时,就执行了list()方法,所有得到的数据不是最新的。