javascript - RxJs:依次执行 3 个可观察对象,并在第二个请求中使用第一个,在第三个请求中使用第一个和第二个的结果

标签 javascript typescript dictionary rxjs observable

我需要能够一个接一个地执行 3 个可观察对象,以便我可以在第二个中使用第一个的结果值,在第三个中使用第一个和第二个结果。

类似这样的事情(它不起作用,因为 serviceId 在第三个请求中不可见):

private setupStuff(): void {
        this.initRouteParams().pipe(
            switchMap(serviceId => this.getFileInfo(serviceId)),
            switchMap(fileName => this.getExistingFile(serviceId, fileName)
                .subscribe(response => {
                    console.log(response);
                }))
            );
    }

最佳答案

您可以显式地将 serviceN 的值返回给 serviceN+1。这是想法:

private setupStuff() {
  this.initRouteParams()
    .pipe(
      switchMap(serviceId => {
        return zip(of(serviceId), this.getFileInfo(serviceId))
      }),
      switchMap(([serviceId, filename]) => {
        return zip(of(serviceId), of(filename), this.getExistingFile(serviceId, filename))
      })
    )
    .subscribe(([serviceId, filename, response]) => {
      console.log(serviceId, filename, response);
    })
}

编辑:

您可以通过显式声明每个输入的类型来修复类型错误。您可能想为 response 分配适当的类型。

关于javascript - RxJs:依次执行 3 个可观察对象,并在第二个请求中使用第一个,在第三个请求中使用第一个和第二个的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51601510/

相关文章:

javascript - 在页面加载时显示网格

reactjs - 如何将 useContext 数据与属性一起使用

Angular (5) httpclient observe 和 responseType : 'blob'

typescript - ts-node 执行带有模块导入和模块定义的 typescript

list - 在 Pandas 中替换每个单元格的多个值

javascript - SyntaxError : missing ) after argument list, 使用异步时

Javascript 嵌套 Promise 未按预期顺序运行

javascript - 带压缩的动态 JavaScript 加载

python - 重命名字典列表中的键

swift - 如何创建值为字符串类型和任何类型数组的字典?