2017-01-20 2 views
0

У меня есть два метода, которые имеют 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, но сделанные будут вызваны, как только оба будут закончены, так как я могу это оптимизировать? Где я должен добавить код для того, когда будет выполнен один из методов, или когда выполняется сбой для второго?

ответ

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 
     }); 
Смежные вопросы