Typical coding example for a sequence of asynchronous REST calls:
function update(ev, updateDiff) {
// get current event from Back End
return scheduleService.getEvent(ev.id).then(function(event) {
// send updates to Back end
return scheduleService.editEvent(ev.id, event.version, updateDiff).then(function(evt) {
var pack = findAircraftPackById(evt.aircraft.id);
// get whole aircraft schedules in order to get repo legs updated
return fetchAircraft(pack).then(function(resp) {
return resp;
}, function(error) {
return $q.reject(error);
});
}, function(error) {
return $q.reject(error);
});
}, function(error) {
return $q.reject(error);
});
}
This is not maintainable, not DRY!!
Refactoring nesting-hell ^ using imperative, declarative techniques: