【发布时间】:2016-10-30 17:44:13
【问题描述】:
我有一些函数可以使用 DB:
setupData(param) {
return Observable.create((observer) => {
this.db.executeSql('SELECT .... ?', param).then(() => {
console.log('DB QUERY DONE');
observer.complete();
}, (error) => {
observer.error(error);
});
});
}
在另一个函数的循环中,我需要按顺序运行这些 observables。我是这样做的:
processData() {
...
let observers = [];
storage.forEach((data) => {
observers.push(this.setupData(data));
});
Observable.concat(observers).subscribe(() => {
console.log('NEXT');
}, () => {
console.log('ERROR');
}, () => {
console.log('COMPLETE');
});
}
所以我的输出:
NEXT
NEXT
NEXT
...
NEXT
NEXT
COMPLETE
但我从未见过“DB QUERY DONE”。每个可观察对象都没有订阅。如果我用 forkJoin 替换 concat - 我看到我期望,但我需要按顺序运行,而不是并行运行......有什么解决方案吗?
【问题讨论】:
-
查询执行后是否需要在观察者中调用
next()? -
@KwintenP 是巫师!非常感谢您的answer,它就像一个魅力!
标签: angular ionic2 rxjs observable