关于Ajax中async的理解和应用

理解:

  Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),既然是异步的那么他和整个程序加载顺序是无关的,也就是ajax程序在整个程序中是不同步的,换句话说不按照从上到下运行程序,而async 属性的作用既是设置整个流程是否为同步的。

应用:

  之前遇到个问题是,使用mui.showLoading("正在提交...", "div")方法显示遮罩层,但是实际测试时却一直无法实现,通过Debugger发现执行到此处时,确实可以显示。最后发现问题就出在async属性上,当异步执行Ajax方法时,下方的mui.hideLoading();提前执行,导致遮罩层显示后立马被关闭。也就无法实现效果了,修改async属性后,遮罩层正常显示。

function tj(filelist) {
        var varArray=new Array();
        varArray.push(new Variable("pass","Y","B"));
        varArray.push(new Variable("start","N","B"));
        var var_json= JSON.stringify(varArray) ;
        mui.showLoading("正在提交...", "div");
        $.ajax({
            type: 'post',
            url: '${ctx}/zcrz/zcrzsqtj',
            data: {
                lxfs: $("#lxfs").val(),
                fplist:JSON.stringify(fpmxinfo),
                filelist: filelist,
                var_json:var_json
            },
            dataType: 'json',
            async: true,//当设置为Ture时,Ajax异步执行。
            success: function (val) {
                if (val.success == true) {
                    mui.hideLoading();
                    window.location.href = "${ctx}/rcbx/rcbxthreecx?from=zcrz&xmbh=${xmbh}}";
                } else {
                    mui.hideLoading();
                    mui.toast(val.msg);
                }
            }, error: function (jqXHR, textStatus, errorThrown) {
                mui.hideLoading();
                /*错误信息处理*/
                console.log(jqXHR.readyState);
            }
        });
    }

 

posted @ 2022-08-05 17:58  天下第一木子李  阅读(643)  评论(0)    收藏  举报