当前位置:  开发笔记 > 编程语言 > 正文

Angular2 Observable - 如何从Observable的构造函数外部调用next

如何解决《Angular2Observable-如何从Observable的构造函数外部调用next》经验,为你挑选了2个好方法。

我正在构建一个暴露Observable的服务.在这个服务中,我接收外部函数调用,它应该触发Observable的下一个调用,以便各种消费者获得订阅事件.在Observer构造函数中,我可以调用next,一切都很好,但是如何在构造函数外部访问它,以便外部触发器可以触发下一个调用?

private myObservable$: Observable;

在服务初始化期间我做

this.myObservable$ = new Observable(observer => {
    observer.next("initial message");
}

然后在同一服务的其他方法中,我希望能够执行类似的操作

this.myObservable$.observer.next("next message");

以上显然不起作用,但我怎样才能实现这个目标呢?

我假设我缺少一些基本的东西,因为必须有一种方法可以在Observable的初始构造函数之外发出更多消息



1> olsn..:

你应该创建一个Subject

this.myObservable$ = new Subject();

然后你可以随时打电话:

this.myObservable$.next(...);

或使用订阅:

this.myObservable$.subscribe(...)



2> Ravi Sevta..:

实际上Subject,既用于发布者又用于订阅者,在这里我认为您只需要发布您的值,因此只需使用Observable。

通过使用observable,将Subscriber分配给类级别的变量,然后使用它,如下面的代码

subscriber: Subscriber;

public observe(): Observable {

    return new Observable(subs => {
      this.subscriber = subs;
    });
  }

public callNext() {

    if (this.subscriber) {
      this.subscriber.next();
      this.subscriber.complete();
    }
  }

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有