控制forEach循环中ajax调用的顺序

时间:2018-01-23 18:50:29

标签: javascript ajax asynchronous

我的代码看起来像这样

var response = [];
requests.forEach(function(request){
    $.when(
           doFirstThing();       //makes ajax call and is async
    ).then(
           doSecondThing();      //makes ajax call and pushes its results to response
    );
}

当我得到回复并推送时,它们的顺序不同,我想知道如何以循环调用它们的正确顺序获取它们。

我尝试在forEach循环之外对响应数组进行排序,但这不起作用。还尝试添加

.done(
    sortResponses();
);

但也没有。请帮忙。

1 个答案:

答案 0 :(得分:0)

.then().done()的参数必须是对函数的引用。您正在调用该函数,因为您将()放在函数名后面。要么自己传递函数名称

.then(doSecondThing)

或使用匿名函数来调用它

.then(() => doSecondThing())