Ajax异步请求(不等待,继续执行)

案例:

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()方法,所有得到的数据不是最新的。

你可能感兴趣的:(JavaWeb#Ajax,ajax)