如何从可观察到的数据中获取数据以用于不同的函数



所以,我碰巧有一个函数如下:

public getAssemblyTree(id: number) {
....
const request = from(fetch(targetUrl.toString(), { headers: { 'responseType': 'json' }, method: 'GET' }));
request.subscribe(
(response) => {
response.json().then(data => {
(this.parseAssemblyTree(data['flat_assembly_graph']));
}
)
}
)
public updateAssemblyTree(id: number) {
let res = this.getAssemblyTree(id)
this.asmTree.next(res);
}

因此,我基本上需要在可观测完成后,函数返回的数据存储在第二个函数(public updateAssemblyTree(id:number((的变量res中。你们能告诉我怎么做吗?当谈到使用可观察性时,我是个新手,所以写下代码真的会对我有所帮助。谢谢你,提前帮我:(

假设getAssemblyTree返回一个可观察的或承诺,那么您也可以订阅它。因此:

this.getAssemblyTree(id).pipe(takeUntil(this.componentDestroyed$))
.subscribe((response) => {
if(response) {
//set your method here.
}
}).

变量this.componentDestroyed被定义为private componentDestroyed$ = new Subject<void>();

确保在组件的ngOnDestroy中也将其丢弃,如下所示:

this.componentDestroyed$.next();
this.componentDestroyed$.complete();

因此,只要组件本身没有被破坏,您的组件就会继续侦听和响应getAssesmblyTree方法中的更改。只有当方法的返回类型是Observable或promise(如果是promise,只需将其包装在from中(时,这才会起作用。

编辑:这可能有些过头了,但你也可以考虑使用商店,这样你就可以订阅该州的部分地区。通过这种方式,它可以很好地与异步管道配对。

最新更新