Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular RxJs,订阅(另一个行为主体)vs订阅((elem)=>;另一个主体。下一个(elem))_Angular_Rxjs - Fatal编程技术网

Angular RxJs,订阅(另一个行为主体)vs订阅((elem)=>;另一个主体。下一个(elem))

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

在angular 9中,我注入了一个
http
对象,在响应中调用get with和subscribe。 像下面这样

somethingElse=newbehaviorsubject([]);
http.get('/api/bla').subscribe(tweets=>somethingElse.next(tweets);
查看API规范中的
Observable
可以看到
subscribe(observer?:PartialObserver):Subscription;

很好,行为主体是
PartialObserver
(has
next:(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('我们已经完成了');

您可以在订阅主题的地方共享代码吗?