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

use*_*274 3 javascript rxjs angular

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

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

当上一个 api 成功调用时,重新调用 api 的正确方法是什么?

adr*_*ons 6

我知道你有 aserviceOne和 a serviceTwo。并且您想serviceTwo使用从 检索到的数据进行调用serviceOne

使用 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 => {},
            });
    }
Run Code Online (Sandbox Code Playgroud)

如果您不需要从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 => {},
        });
    }
Run Code Online (Sandbox Code Playgroud)