如何用未弃用的方法替换 rxJs 中的方法 'combineLatest'?
How to replace method 'combineLatest' from rxJs with a not deprecated method?
我使用 combinlatest
rsjx/operator 一个实现了方法,它工作正常但是给出的声纳问题表明它 deprecated.so ,我需要将它转换为最新的一个。但我尝试了,只是替换它给出了错误的导入。我需要一些专家的帮助才能做到这一点。
gX$ = createEffect(() => this.actions$.pipe(
ofType(ActionType.A),
combineLatest(this.service.getoc()),
mergeMap(([, oc]) => this.reviewService.findBy(oc.id,
new Date(),
new Date(new Date().setDate(new Date().getDate() + 1)))
.pipe(
mergeMap(d => {
return of(reviewLoadSuccess({ reviews: getReviews(d) }));
}
),
catchError(error => {
return of(reviewLoadFailure({ error: error }));
})
)
)));
因为您似乎只需要 this.service.getoc()
返回的值,我建议改用 switchMapTo
运算符,如下所示
gX$ = createEffect(() => this.actions$.pipe(
ofType(ActionType.A),
switchMapTo(this.service.getoc()),
mergeMap(oc => this.reviewService.findBy(oc.id,
new Date(),
new Date(new Date().setDate(new Date().getDate() + 1)))
.pipe(
mergeMap(d => {
return of(reviewLoadSuccess({ reviews: getReviews(d) }));
}
),
catchError(error => {
return of(reviewLoadFailure({ error: error }));
})
)
)));
如果您也想使用该操作,请考虑应用以下更改:
gX$ = createEffect(() => this.actions$
.pipe(
ofType(ActionType.A),
switchMap(action => this.service.getoc().pipe(
switchMap(oc => {
// you have access to both action, and oc
// ... continue running your code
})
))
)
)
您需要从 rxjs
而不是 rxjs/oeprators
导入并像这样使用它:
import { combineLatest } from 'rxjs';
combineLatest([
this.actions$.pipe(ofType(ActionType.A)),
this.service.getoc()
]).pipe(mergeMap(...));
我使用 combinlatest
rsjx/operator 一个实现了方法,它工作正常但是给出的声纳问题表明它 deprecated.so ,我需要将它转换为最新的一个。但我尝试了,只是替换它给出了错误的导入。我需要一些专家的帮助才能做到这一点。
gX$ = createEffect(() => this.actions$.pipe(
ofType(ActionType.A),
combineLatest(this.service.getoc()),
mergeMap(([, oc]) => this.reviewService.findBy(oc.id,
new Date(),
new Date(new Date().setDate(new Date().getDate() + 1)))
.pipe(
mergeMap(d => {
return of(reviewLoadSuccess({ reviews: getReviews(d) }));
}
),
catchError(error => {
return of(reviewLoadFailure({ error: error }));
})
)
)));
因为您似乎只需要 this.service.getoc()
返回的值,我建议改用 switchMapTo
运算符,如下所示
gX$ = createEffect(() => this.actions$.pipe(
ofType(ActionType.A),
switchMapTo(this.service.getoc()),
mergeMap(oc => this.reviewService.findBy(oc.id,
new Date(),
new Date(new Date().setDate(new Date().getDate() + 1)))
.pipe(
mergeMap(d => {
return of(reviewLoadSuccess({ reviews: getReviews(d) }));
}
),
catchError(error => {
return of(reviewLoadFailure({ error: error }));
})
)
)));
如果您也想使用该操作,请考虑应用以下更改:
gX$ = createEffect(() => this.actions$
.pipe(
ofType(ActionType.A),
switchMap(action => this.service.getoc().pipe(
switchMap(oc => {
// you have access to both action, and oc
// ... continue running your code
})
))
)
)
您需要从 rxjs
而不是 rxjs/oeprators
导入并像这样使用它:
import { combineLatest } from 'rxjs';
combineLatest([
this.actions$.pipe(ofType(ActionType.A)),
this.service.getoc()
]).pipe(mergeMap(...));