Javascript 来自多个ajax请求的总和值

Javascript 来自多个ajax请求的总和值,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图获取ajax请求返回的数据的总值,但它显示的是total:0,因为它在完成ajax请求之前执行totalRev var totalRev = 0; $.ajax({ type: "POST", url: "cloudmobi.php", data: {action: 'cloudmobi'}, dataType:'JSON', success: func

我试图获取ajax请求返回的数据的总值,但它显示的是total:0,因为它在完成ajax请求之前执行totalRev

var totalRev = 0;
        $.ajax({
            type: "POST",
            url: "cloudmobi.php",
            data: {action: 'cloudmobi'},
            dataType:'JSON', 
            success: function(response){
                document.getElementById('cloudmobi').innerHTML = response.cloudmobi;
                console.log(response.cloudmobi);
                var cloudmobi = parseInt(response.cloudmobi);
                console.log('CLOUDMOBI:'+cloudmobi);
                totalRev += cloudmobi;

            }
        });
        $.ajax({
            type: "POST",
            url: "mobusi.php",
            data: {action: 'mobusi'},
            dataType:'JSON', 
            success: function(response){
                document.getElementById('mobusi').innerHTML = response.mobusi;
                console.log(response.mobusi);
                var mobusi = parseInt(response.mobusi);
                totalRev += mobusi;
                console.log('MOBUSI:'+mobusi);

            }
        });
        $.ajax({
            type: "POST",
            url: "appnext.php",
            data: {action: 'appnext'},
            dataType:'JSON', 
            success: function(response){
                document.getElementById('appnext').innerHTML = response.appnext;
                console.log(response.appnext);
                var appnext = parseInt(response.appnext);
                totalRev += appnext;
                console.log('APPNEXT:'+appnext);

            }
        });
        console.log('TOTAL:'+totalRev); 
我不想使用异步,因为这里使用ajax的全部目的是快速加载站点,然后动态加载数据。最好在一个请求中发送所有数据,这样您就可以在服务器上进行求和,并在响应中的单个属性中发送数据

不管出于什么原因,假设您不能这样做,那么您可以存储来自AJAX请求的所有承诺,然后在所有请求完成并将其值添加到数组中后执行代码。然后可以对数组求和。大概是这样的:

var值=[];
var承诺=[
$.ajax({
//ajax设置。。。
成功:函数(){
push(parseInt(response.cloudmobi),10);
}
}),
$.ajax({
//ajax设置。。。
成功:函数(){
push(parseInt(response.mobusi),10);
}
}),
//请求。。。
];
$.when.apply(这个,承诺).done(函数(){
var sum=值。减少(函数(a,b){
返回a+b;
}, 0);
//在这里使用sum。。。
});
jQuery“”解决了您的问题:

$.when( d1, d2 ).done(function ( v1, v2 ) {
    console.log( v1 ); // "Fish"
    console.log( v2 ); // "Pizza"
});

所有的数据都来自糟糕的api,加载时间超过8秒,每个api都有一个php文件,使用ajax请求数据的速度要快得多,我现在就试试这个。