以下代码中,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();
- })
- }
- }
不能,这样做的后果是,修改数据后,页面得到的数据不是最新的。不是调用了list()方法刷新数据吗,为什么得到的数据不是修改之后的呢?
因为这里本质上使用的是Ajax异步请求,如果将上面的两条语句放在else之后。因为是异步请求,所有不会等Ajax请求执行完 才往下执行list()方法,也就是说,在还没修改好数据时,就执行了list()方法,所有得到的数据不是最新的。