rxjs forkjoin问题

问题描述

使用rxjs的forkjon想要处理两个异步请求的结果,但是其中一个异步请求可能会因为某种原因不需要发送。因此我会返回一个空的流,但是这会导致另一个正常想要发送的请求自动cancel,请问有什么解决方案

问题出现的环境背景及自己尝试过哪些方法

相关代码

粘贴代码文本(请勿用截图)

export class SystemService {
    constructor(private http: HttpClient) {}
    
    public getSystemInfo (): Observable<SystemInfo> {
        return this.http.get<SystemInfo>('/goods/test',{withCredentials: true})
    } 

    public factory() {
        const source$ = this.getSystemInfo();
        const source$2 = of(1);
        return of('').pipe(mergeMap(([source$, source$2])=> {
            return forkJoin((source, result)=> {
                return source;
            })
        }))
    }

}

在component.ts中调用

this.sysService.factory().subscribe(res=> {
            console.log(res);
        })

你期待的结果是什么?实际看到的错误信息又是什么?

期待返回正常调用的请求的结果即source$的结果,但是这种写法不报错,也不会下发getSystemInfo()的请求。

阅读 1.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进