Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在所有ajax请求完成后执行代码_Javascript_Ajax - Fatal编程技术网

Javascript 在所有ajax请求完成后执行代码

Javascript 在所有ajax请求完成后执行代码,javascript,ajax,Javascript,Ajax,这是我的代码: function updateCharts() { for (var i = 0; i < charts.length; i++) { updateChart(charts[i]); } sortQueues(); } function updateChart(chart) { $.ajax({ type: "POST", async: true, data: '{id: '

这是我的代码:

function updateCharts() {
    for (var i = 0; i < charts.length; i++) {
        updateChart(charts[i]);
    }

    sortQueues();
}

function updateChart(chart) {
    $.ajax({
        type: "POST",
        async: true,
        data: '{id: ' + chart.Id + '}',
        url: "foo/getData",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var parsedResponse = JSON.parse(response.d);
            insertChartData(chart, parsedResponse);
        },
        failure: function (response) {
            console.Log(response);
        }
    });
}
函数updateCharts(){
对于(var i=0;i

更新所有图表后,如何运行
sortQueues()
函数?现在,
sortQueues()
函数是在
insertChartData
完成之前执行的(因为ajax调用),并且图表不是用html排序的。当然,我不希望有同步调用。

$。ajax
返回一个值,以便您可以捕获它们并将其与
Promise.all一起使用

首先,还承诺:

function updateChart(chart) {
    return $.ajax({
Promise.all(promises).then(array_of_results => {
    // all ajax requests recieved at this point
});
然后用
map
替换您的循环,这样您就可以在一个数组中获得所有承诺

var promises = charts.map(updateChart);
然后你可以使用承诺:

function updateChart(chart) {
    return $.ajax({
Promise.all(promises).then(array_of_results => {
    // all ajax requests recieved at this point
});

数据:'{id:'+chart.id+'}',
-这不是有效的JSON!不要通过混合字符串来生成JSON。使用库函数执行此操作<代码>数据:JSON.stringify({id:chart.id}),
可能的重复请记住在发布问题之前检查谷歌。通过谷歌搜索你的确切问题标题,我找到了副本。如果我用
var-promises=charts.map(charts)替换loop,那么搜索所需的时间将少于键入所有这些内容所需的时间
应该在哪里启动updateChart
?@dafie-我错了。我复制/粘贴了错误的变量名。它应该是
charts.map(updateChart)