在我的可观察对象上有一个管道函数,如果结果为null或未定义,则将响应值更改为空数组。
obs.pipe(
map(res => {
// pipe and map function to return empty array if resource did not return result
return res ?? [];
})
);
我在多个地方使用这个功能,我想知道我是否可以创建一些处理程序,所以我不需要重用这个代码。
我的期望:
this.loadCountries () .pipe (defaultEmptyArrayPipe)
谢谢
你可以用一个接收可观察对象并返回一个可观察对象的函数来实现它,例如:
function defaultEmptyArrayPipe <T>(source$: Observable<T>): Observable<T> {
return source$.pipe(
map(res => {
return res ?? [];
})
)
}
然后按你想要的方式调用它:
this.loadCountries().pipe(defaultEmptyArrayPipe)
你可以直接用pipe把它包起来,然后保存起来重用
const defaultEmptyArrayPipe = pipe(map(res => {
// pipe and map function to return empty array if resource did not return result
return res ?? [];
}))
this.loadCountries().pipe(defaultEmptyArrayPipe)