javascript - 上一个成功完成后,如何对 api 进行新调用?

标签 javascript angular rxjs

我是 angular 和 rxjs 的新手,我有以下场景,在我不知道的 angular/rxjs 上下文中,我需要在成功解析对 api 的调用后进行新调用怎么做

handler(): void {
  this.serviceNAme
    .createDirectory(this.path)
    .pipe(
      finalize(() => {
        this.someProperty = false;
      })
    )
    .subscribe(
      (data) => console.log(data),
      (error) => console.error(error.message)
    );
}

在上一个 API 成功调用时,对 API 进行新调用的正确方法是什么?

最佳答案

我了解到您有一个 serviceOne 和一个 serviceTwo。并且您想使用从 serviceOne 检索到的数据调用 serviceTwo

使用 rxjs switchMap您可以将一个可观察对象通过管道传输到另一个对象。

    handler(): void {
        this.serviceOne
            .createDirectory(this.path)
            .pipe(
                switchMap(serviceOneResult => {
                    // transform data as you wish
                    return this.serviceTwo.methodCall(serviceOneResult);
                })
            )
            .subscribe({
                next: serviceTwoResult => {
                    // here we have the data returned by serviceTwo
                },
                error: err => {},
            });
    }

如果您不需要将数据从 serviceOne 传递到 serviceTwo 但您需要将它们一起完成,您可以使用 rxjs forkJoin .

    handler(): void {
        forkJoin([
            this.serviceOne.createDirectory(this.path), 
            this.serviceTwo.methodCall()
        ])
        .subscribe({
            next: ([serviceOneResult, serviceTwoResult]) => {
                // here we have data returned by both services
            },
            error: err => {},
        });
    }

关于javascript - 上一个成功完成后,如何对 api 进行新调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65016054/

相关文章:

javascript - MathJax 不使用 Angular 渲染

javascript - jQuery 挑选出值(value)但不在其中显示/找到它

css - 将 angular 4 升级到 angular 5 后,bootstrap css 样式不起作用

javascript - 当 Css 类更改时运行函数

javascript - 如何让 Observable.flatMap 等待解析

Javascript: window.onload问题

javascript - iOS 11 navigator.getUserMedia 在 Chrome 中未定义

javascript - 根据时间在脚本标签和样式表中附加动态版本(变量)

rxjs - Redux Observable 史诗中的 IF

rxjs - 什么触发了 combineLatest?