Angular RxJs,订阅(另一个行为主体)vs订阅((elem)=>;另一个主体。下一个(elem))
在angular 9中,我注入了一个Angular RxJs,订阅(另一个行为主体)vs订阅((elem)=>;另一个主体。下一个(elem)),angular,rxjs,Angular,Rxjs,在angular 9中,我注入了一个http对象,在响应中调用get with和subscribe。 像下面这样 somethingElse=newbehaviorsubject([]); http.get('/api/bla').subscribe(tweets=>somethingElse.next(tweets); 查看API规范中的Observable可以看到subscribe(observer?:PartialObserver):Subscription; 很好,行为主体是Parti
http
对象,在响应中调用get with和subscribe。
像下面这样
somethingElse=newbehaviorsubject([]);
http.get('/api/bla').subscribe(tweets=>somethingElse.next(tweets);
查看API规范中的Observable
可以看到subscribe(observer?:PartialObserver):Subscription;
很好,行为主体是PartialObserver
(hasnext:(value:T)=>void;
method)
那么,为什么下面的方法不起作用呢
somethingElse=newbehaviorsubject([]);
http.get('/api/bla').subscribe(somethingElse);
//这也不是
//语义上应该等于上面的lambda吗?
http.get('/api/bla').subscribe(somethingElse.next);
在后两种情况下都不会调用回调。问题是什么?行为主体既是可观察者又是观察者。如果在订阅中使用它,请记住,在发出完整的http调用时,也会传递完整的http调用,因此这也会完成行为主体
const{of,BehaviorSubject}=rxjs;
const bs$=新行为主体(“初始”);
bs$.subscribe(val=>console.log('First sub',val));
of('hello')。subscribe(bs$);//of完成并同时完成行为主题
bs$.subscribe(val=>console.log('Sub-after-complete',val));
bs$.next('我们已经完成了');
您可以在订阅主题的地方共享代码吗?