我是 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/