使用链接完成然后进行多个异步调用

时间:2017-01-20 09:52:48

标签: javascript jquery ajax asynchronous

我有两个在其中有ajax调用的方法,它们被命名为setEmployees和getAllRecordsForEdit。我有一个代码应该在setEmployees完成后执行;在完成setEmployees和getAllRecordsForEdit之后应该执行的另一个代码;以及getAllRecordsForEdit失败时应执行的另一个代码。现在我有了这个:

$.when(setEmployees(selectedEmployeeId), getAllRecordsForEdit(date, selectedEmployeeId))
.done(function (a, b) {
    console.log('setEmployees is done')
    console.log('both are done');
}).fail(function(error) { });

一旦两者都完成,就会调用它。在这种情况下,setEmployees可以在getAllRecordsForEdit之前完成,但是一旦两者都完成就会调用,所以我该如何优化呢?我应该在何处完成其中一个方法或第二个方法的失败时添加代码?

1 个答案:

答案 0 :(得分:0)

您可以这样做:

$.when(setEmployees(selectedEmployeeId))
        .then(function () {
            //do some stuff after setEmployees
            return getAllRecordsForEdit(date, selectedEmployeeId);
        })
        .then(function (res) {
            //do some stuff after both
        })
        .fail(function (err) {
            //handle error
        });