1. 异步--同步

ajax请求属于异步请求,如果想将请求的数据提供给外部使用,如下面方式:这个方式将返回一个空对象 因为ajax请求默认是异步的,return 语句将先于getJSON中的操作。

解决方式是,将ajax操作定义为同步的请求方式就可以了(async: false)。但是只能通过$.ajax()的方式,$.getJSON 等方式都是异步操作。

注: 同步操作会有效率的问题,它需要等待ajax请求结束才执行下一步操作,可能会导致浏览器出现假死状态

var getDayComparisonData = function() {
    var lastDay, lastDayTotal = 0, toDay, toDayTotal = 0;
        $.getJSON(Constants.CONTEXT_PATH
                + "/statistics/findTodayAndYesDayPassengerFlow", function(data) {

            toDayTotal = data.todayCount;
            lastDayTotal = data.yesterDayCount;

        });

    return {
        toDayTotal : toDayTotal,
        toRate : lastDayTotal && (toDayTotal / lastDayTotal - 1) * 100
    }
};

//解决方式

var getDayComparisonData = function() {
    var lastDay, lastDayTotal = 0, toDay, toDayTotal = 0;

    $.ajax({  
        async: false,   //同步请求  
        type : "GET",  
        url : Constants.CONTEXT_PATH
                + "/statistics/findTodayAndYesDayPassengerFlow",   
        success : function(data) {  
            toDayTotal = data.todayCount;
            lastDayTotal = data.yesterDayCount;
        }  
    }); 

    return {
        toDayTotal : toDayTotal,
        toRate : lastDayTotal && (toDayTotal / lastDayTotal - 1) * 100
    }
};
Copyright © eamiear all right reserved,powered by Gitbook该文件修订时间: 2019-06-17 16:18:09

results matching ""

    No results matching ""