ajax异步的加深理解

过去印象中的ajax的异步操作,一直还居然在$.ajax函数内部的异步,真是大错特错,实际的异步操作,是针对整个js文件来的。

今天总算意识到了,实际情况如下:

$(function(){
    //【弹框提示层】初始化
    $.like.initAlertMsgDiv();
    //判断账户是否创建钱包
    isExistWallet();
    //钱包信息显示
    showWalletInfo();
    //加载最近交易记录
    PageClick(1, 10, 3);
    。。。。。
首先判断账户是否创建钱包,没有创建的话,及时创建空钱包。下一步是加载钱包中的信息。

加载钱包信息函数中有钱包非空验证。刚开始时,isExistWallet()函数中的ajax操作时异步的,导致没有来的及创建钱包,就执行钱包信息操作,从而报钱包为空错误。

所以此时ajax应改为同步操作,判断账户是否创建钱包代码如下:

function isExistWallet(){
    //ajax查询
    $.ajax({
        url: $.like.getRootURL()+"/wallet/isExistWallet.htm",
        type: "POST",
        data: {
            "type":type
        },
        dataType: "json",
        async:false,
        success: function(data) {
            var res = data.res;
            var msg = data.msg;
            if(res==2){//登录超时
                $.like.alert_Msg(msg, 1, $.like.getRootURL()+'/agent/home.html');
            }else if(res!=0){
                $.like.alert_Msg(msg, 0, '');
            }
        }
    });
}
async:false 就可以搞定了。

原文地址:https://www.cnblogs.com/archermeng/p/7537233.html