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 的正确方法是什么?
我知道你有 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)
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |