首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rxjs在combineLatest中调用combineLatest

rxjs在combineLatest中调用combineLatest
EN

Stack Overflow用户
提问于 2017-02-08 19:22:38
回答 2查看 6.2K关注 0票数 3

我有一个关于rxjscombineLatest方法的问题。我试图在combineLatest中调用combineLatest,虽然它返回了Observable对象,但它不起作用。请帮忙解决这个问题。永远不会调用console.log

实际上,所有观察者都在不同的文件中,所以我不能将this.search$移到this.services$

代码语言:javascript
复制
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 '';
    }
);

已解决:如果没有订阅者,它将无法工作,所以我必须订阅它

EN

回答 2

Stack Overflow用户

发布于 2017-02-08 19:29:29

combineLatest()运算符的所有源可观测对象都至少发出一个值时,它就会发出一个值。

因此,如果console.log(...)从不打印,这意味着this.search$this.services$永远不会输出任何内容。换句话说,这意味着store.select('currentRegions')store.select('services')store.select('search')中的一个永远不会发出任何值。

请注意,您可以使用startWith() (即使使用startWith(null))。

这是可行的:https://jsbin.com/gecede/2/edit?js,console

这不起作用:https://jsbin.com/livafar/2/edit?js,console

票数 2
EN

Stack Overflow用户

发布于 2017-07-04 19:04:18

RxJS CombineLatest是一种AngularJS $q.all

代码语言:javascript
复制
import 'rxjs/add/observable/combineLatest';


Observable
      .combineLatest(this.store.select('currentRegions'), this.store.select('services')
      .do(console.log)
      .subscribe();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42111759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档