我想知道一个接一个发出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));
});
}
答案 0 :(得分:2)
为什么switchMap在您的情况下不起作用?我认为这是最好的解决方案,switchMap接收流的结果并返回另一个可观察到的以继续流:
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));