我遇到rxjs
和combineLatest
方法的问题。
我试图在combineLatest
中调用combineLatest
但它不起作用,尽管它返回Observable对象。请帮忙解决问题。 console.log
永远不会被称为
实际上,不同文件中的所有观察者,所以我无法将this.search$
移动到this.services$
this.search$ = store.select('search');
this.services$ = Observable.combineLatest(
store.select('currentRegions'),
store.select('services'),
(regions, services) => {
// some filter here
return services;
}
);
this.autocomplete$ = Observable.combineLatest(
this.search$,
this.services$,
(search, services) => {
console.log('show me, please');
return '';
}
);
已解决:没有任何订阅者它不起作用,所以我必须订阅它
答案 0 :(得分:2)
combineLatest()
运算符在其所有源Observable发出至少一个值时发出一个值。
因此,如果console.log(...)
从未打印,则表示this.search$
或this.services$
从不发出任何内容。换句话说,这意味着store.select('currentRegions')
,store.select('services')
或store.select('search')
中的任何一个都不会发出任何值。
请注意,您可以使用startWith()
(即使使用startWith(null)
)。
答案 1 :(得分:1)
RxJS CombineLatest是一种AngularJS $ q.all
import 'rxjs/add/observable/combineLatest';
Observable
.combineLatest(this.store.select('currentRegions'), this.store.select('services')
.do(console.log)
.subscribe();