自定义可观察管道函数

Custom observable pipe function

我在我的可观察对象上有一个管道函数,如果结果为空或未定义,我将响应值更改为空数组。

obs.pipe(
        map(res => {
          // pipe and map function to return empty array if resource did not return result
          return res ?? [];
        })
      );

我在多个地方使用这个功能,我想知道我是否可以创建一些处理程序,这样我就不需要重用这个代码。

我的期望:

this.loadCountries().pipe(defaultEmptyArrayPipe)

谢谢

你可以通过用函数包装它来实现它,接收 observable 和 returns 一个 observable 例如:

function defaultEmptyArrayPipe <T>(source$: Observable<T>): Observable<T> {
  return source$.pipe(
        map(res => {
          return res ?? [];
        })
      )
}

然后随心所欲地调用它:

this.loadCountries().pipe(defaultEmptyArrayPipe)

你可以用管子把它包起来保存起来重复使用

    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)