I need to make 3 requests in chain. So for this I use jquery deffered.
Request 1
-> on done if response contains expected result then Request 2 else return empty array/null
-> on done if response contains expected result then Request 3 else return empty array/null
private request1() {
const vm = this;
vm.isLoading(true);
let deffer = system.defer(dfd => {dataService.getResponse1()
.done((response) => {
request2(response.collection))
dfd.resolve();
});
return deffer.promise();
}
private request2(collection) {
dataService.getResponse2(collection)
.done((response) => request3(response.collection));
}
private request3(collection) {
dataService.getResponse3(collection)
.done((response) => saveResponse(response.collection));
}
private saveResponse(collection) {
//do some stuff
}
in Constructor I call request1
like
vm.request1().done(() => {
vm.isLoading(false);
});
The problem is that isLoading
is setted to false
before saveResponse
is called. How should I correctly refactor my requests-structure to update isLoading
after all requests are finished?
Thanks.