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


    案例:

    1、问题:

    以下代码中,if 和 else里面都有以下两句话,能不能把这两句话放在else之后执行?

    //关闭对话框
    this.dialogFormVisible = false;
    //刷新数据
    this.list();
    1. save() {
    2. //修改和新增显示的是同一个表单,点击确定会触发同一个方法
    3. //所有这里需要判断是 修改还是新增
    4. if (this.form.id){//修改时会把id传给表单
    5. //是修改
    6. request.post('api/furn/updata', this.form)
    7. .then(res => {
    8. console.log(res);
    9. if (res.code==200){
    10. //弹出消息框
    11. this.$message({
    12. message: '修改成功',
    13. type: 'success',
    14. });
    15. }else if (res.code == 400) {
    16. //弹出消息框
    17. this.$message.error('修改失败');
    18. }
    19. //关闭对话框
    20. this.dialogFormVisible = false;
    21. //刷新数据
    22. this.list();
    23. })
    24. }else {
    25. request.post('api/furn/save', this.form)
    26. .then(response => {
    27. console.log(response);
    28. //关闭对话框
    29. this.dialogFormVisible = false;
    30. //刷新数据
    31. this.list();
    32. })
    33. }
    34. }

    2、答案是:

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

  • 相关阅读:
    NumPy(1)-常用的初始化方法
    Centos7 安装gdal历程,使用node-gdal功能
    upload上传弹窗前二次确认
    Linux进程
    Python中的元类(metaclass)
    【C++进阶】:特殊类的设计
    【C语言】文件操作详解
    NLP冻手之路(2)——文本数据集的下载与各种操作(Datasets)
    UGUI学习笔记(九)自制3D轮播图
    Vue2 05 计算属性
  • 原文地址:https://blog.csdn.net/m0_59084856/article/details/133520890