同步循环中的异步ajax

时间:2016-03-23 08:07:24

标签: php jquery ajax request

预期结果:

我希望变量d是最小日期。 (02/03)

实际结果

但是在我运行代码后,我的警报返回当前日期(23/03)..
如果我在修改变量时添加警报,我有:
- “完成:2016-03-23”
- “2016-03-02”(变量在最终警报后修改)

我理解这个问题,但我不知道如何解决它。

我对Ajax不太熟悉。请有人帮帮我吗?
如果您需要更多解释,请告诉我
谢谢。

这是我的代码:

var d = moment(Date.now()).format('YYYY-MM-DD hh:mm:ss');       

$.when.apply($, $.map(Object.keys(filtres), function(f) {
    var query = $.ajax({
        type: "POST",
        url: "DB.php",
        data : {
            func: "getDateNextMilestone",
            typeMilestione: f,
            lab: lab,
        labelCurrent: filtres[f] 
        },
        dataType: "json"
    });
    query.done(function(data){
        data.forEach(function(a,i){
            if (a.borneSup != null){
                if(moment(a.borneSup)<moment(d)){
                    d = moment(a.borneSup).format('YYYY-MM-DD hh:mm:ss');
                }
            }
        });
    }).fail(function (a, b) {
        console.log(b)
    });     
})).done(function() {
    alert("done :"+d);
});

1 个答案:

答案 0 :(得分:0)

在“完成”部分中调用您的同步循环,如下所示:

...
})).done(function() {
    //alert("done :"+d);
    *loop or function with final value (in this case d) *
});