gpt4 book ai didi

具有多个 Http 请求的 Angular RxJS 嵌套订阅

转载 作者:可可西里 更新时间:2023-11-01 17:04:55 27 4
gpt4 key购买 nike

我想知道在一个接一个地发出 http 请求时的最佳做法是什么,特别是,我将被要求使用第一个请求的返回值。目前,我有一个嵌套订阅来解决这个问题[见下面的代码]。

我尝试使用 RxJS 的 siwtchMap、mergeMap 和 concat,但它似乎没有用。任何建议都会有所帮助。

onStartUp() {
this.recordingService.getRecording(this.id)
.subscribe(x => {
this.recording = x;
const params = new Chunk(this.recording, 0, 30);
this.recordingService.getSignal(params)
.subscribe(data => console.log(data));
});
}

最佳答案

为什么 switchMap 在您的情况下不起作用?我认为这是最好的解决方案,switchMap 接收流的结果并返回另一个 observable 以继续流:

onStartUp() {
this.recordingService.getRecording(this.id)
.switchMap((x) => {
this.recording = x;
const params = new Chunk(this.recording, 0, 30);
return this.recordingService.getSignal(params);
})
.subscribe(data => console.log(data));
}

如果您使用的是管道运算符:

import { switchMap } from 'rxjs/operators';

this.recordingService.getRecording(this.id)
.pipe(
switchMap((x) => {
this.recording = x;
const params = new Chunk(this.recording, 0, 30);
return this.recordingService.getSignal(params);
})
)
.subscribe(data => console.log(data));

关于具有多个 Http 请求的 Angular RxJS 嵌套订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51149424/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com