У меня есть некоторые функции для работы с БД:Concat Наблюдаемые
setupData(param) {
return Observable.create((observer) => {
this.db.executeSql('SELECT .... ?', param).then(() => {
console.log('DB QUERY DONE');
observer.complete();
}, (error) => {
observer.error(error);
});
});
}
И внутри цикла в другой функции, мне нужно, чтобы запустить эти наблюдаемые последовательно. Я делаю это так:
processData() {
...
let observers = [];
storage.forEach((data) => {
observers.push(this.setupData(data));
});
Observable.concat(observers).subscribe(() => {
console.log('NEXT');
},() => {
console.log('ERROR');
},() => {
console.log('COMPLETE');
});
}
Так что мой выход:
СЛЕДУЮЩИЙ
Вперед Вперед
...
СЛЕДУЮЩИЙ
СЛЕДУЮЩИЙ
ПОЛНОЕ
, но я никогда не видел "DB QUERY DONE". На каждого наблюдаемого нет подписки. Если я заменю concat на forkJoin - я вижу, что я ожидаю, но мне нужно запустить SEQUENTIALLY, а не параллельно ... Есть ли какое-то решение?
вам нужно вызвать Do 'следующий()' в вашем наблюдателя после выполнения запроса? – Brad
@ KwintenP - волшебник! Большое спасибо за ваш [ответ] (http://stackoverflow.com/a/40327773/3002244), он работает как шарм! – Dmitry