I have some function to work with DB:
setupData(param) {
return Observable.create((observer) => {
this.db.executeSql('SELECT .... ?', param).then(() => {
console.log('DB QUERY DONE');
observer.complete();
}, (error) => {
observer.error(error);
});
});
}
And inside a loop in another function I need to run these observables sequentially. I do it like this:
processData() {
...
let observers = [];
storage.forEach((data) => {
observers.push(this.setupData(data));
});
Observable.concat(observers).subscribe(() => {
console.log('NEXT');
}, () => {
console.log('ERROR');
}, () => {
console.log('COMPLETE');
});
}
So my output:
NEXT
NEXT
NEXT
...
NEXT
NEXT
COMPLETE
but I never seen "DB QUERY DONE". There is no subscribe on each observable. If I replace concat with forkJoin - I see that I expect, but I need to run SEQUENTIALLY, not parallel... Is there any solution?