【发布时间】:2017-03-03 07:00:06
【问题描述】:
我在 Angular2 中使用 observable。据我所知,每个 Observable 实例都带有一个观察者(1:1),当我们用observer.next(value)发出一些东西时,我们可以用observable.subscribe((value)=> {})得到那个值。
var observable = Observable.create(observer => {
observer.next(value);
}
.map(value=>{})
.catch(...)
observable.subscribe(value => {
console.log(value);
})
如何在不知道相应观察者的情况下发出值,因为我想在 create 函数之外发出值。一种可能的解决方案是将观察者保存到某个全局变量中,但我认为一个可观察的应该就足够了。对此有什么建议吗??
【问题讨论】:
-
也许你正在寻找类似
Subject的东西? -
哦,看来可以使用Subject而不是Observable来完成,非常感谢!!我会花时间进一步研究它。或者我想也许我可以创建一个做我需要的类:)
-
主题是要走的路。另外注意不是1:1,可以多次订阅
-
哦,我的错,我以为每次订阅只有一个观察者,但结果是每个订阅都会创建一个不同的观察者。严重的误会>
-
确实如此。主题是您需要使用的主题。它等效于角度 1 中的 q.defer()。然后在您的函数中返回主题,这等效于 defer.promise。还有 defer.reject = subject.error(), subject.next= defer.resolve
标签: javascript angular rxjs observable rxjs5