gpt4 book ai didi

angular - RxJS 6 switchMap 弃用符号使用

转载 作者:太空狗 更新时间:2023-10-29 17:18:46 24 4
gpt4 key购买 nike

我已经从 Angular 5 更新到 Angular 6。现在我正在尝试更新我的代码以使其与 RxJS 6 兼容。

.pipe(
map(job => job[0]),
switchMap((job) => {
return job ? this.bookingService.findByID(job.property.id) : Observable.empty();
}, (job: Job, bookings: Booking[]) => {
this.mark_jobs_unavailable(job, bookings);
return job;
})
)

我在使用 switchMap 时收到警告,指出 Deprecated Symbol is used

这些是我的导入:import {map, switchMap} from 'rxjs/operators';

有没有其他方法可以在 v6 中使用 switchMap?另外,如果我不更改我的代码,rxjs-compat 应该可以使我现有的代码正常工作(我已经安装了)但是我使用相同的代码但在 RxJS 5 样式中得到以下错误:

.map(job => job[0])
.switchMap((job) => {
return job ? this.bookingService.findByID(job.property.id) : Observable.empty();
}, (job: Job, bookings: Booking[]) => {
this.mark_jobs_unavailable(job, bookings);
return job;
})

错误:需要 1 个参数但得到 2 个参数

最佳答案

作为 switchMap 的第二个参数给出的 resultSelector 函数是 deprecated .您需要删除它并使用 map 运算符实现目标。

这里最棘手的部分是决定将 map 运算符放在哪里。实际上,映射运算符进入作为 switchMap 参数提供的函数主体。

没有结果选择器函数的代码会像下面这样:

     .pipe(
map(job => job[0]),
switchMap((job) => {
return (job ? this.bookingService.findByID(job.property.id) : Observable.empty()).pipe(

// This is the mapping function provided as the alternative to the deprecated result selector function
// This should be placed inside the body of the function which is the 1st (and only one) argument of switchMap
map((bookings: Booking[])=>{
this.mark_jobs_unavailable(job, bookings);
return job;
})

);
}
)
)

关于angular - RxJS 6 switchMap 弃用符号使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50478696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com