只运行一次observable,然后检查是否完成 - angular2 typescript

时间:2017-10-18 10:20:46

标签: javascript angular typescript observable

Observables非常新,如果这是基本的道歉,但我尝试使用Google搜索,似乎无法找到我想要的内容。

这是一个非常基本的例子 https://plnkr.co/edit/kgECPQyoKqY7RamebUUu?p=preview

为什么我的Initialized方法在我的服务调用之前不会被调用?我认为initialized可观测量会在我Observable.forkJoin后立即执行。我需要以某种方式开始这个过程吗?

为什么我的myService.loadOtherData方法似乎永远不会调用subscribe方法???

提前致谢

1 个答案:

答案 0 :(得分:0)

如果你是Observables的新手,我建议你先从一个基本的例子开始。

例如:(伪代码,也许)

let observable = new Observable<string>(observer => {
  if (1 == 1) {
    observer.next("one is one");
  } else {
    observer.error("one is not one");
  }
});
observable.subscribe(
  response => console.log(response), 
  error -> console.log(error)
);

使用主题更加相同,但主题可以更自由地使用:

let subject = new Subject();
subject.subscribe(response -> console.log(response));
subject.next('hello');

我相信我看到你将两者结合起来,订阅主题,然后用可观察的数据获取数据?通过这些示例,您是否有足够的信息,或者您是否需要一个非常具体的示例?

编辑:

你的this.initialized.subscribe'开始了这个过程'。 你调用loadOtherData函数太晚了,这使你在数据返回时没有订阅this.initialized。这就是你没有看到console.log('initialized')

的原因

EDIT2:

请注意BehaviorSubject保存数据并在订阅时返回。无需使用空字符串对其进行初始化。