Return 结果为空数组时的动作

Return action when the result is an empty array

当第一个 mergeMap return 是一个空数组时,是否有可能使它成为 return 一个动作(完成)?

of(1)
    .pipe(
      mergeMap(x => []), // this can result in empty array
      distinct(),
      mergeMap(x => {
        ...
        return fulfilled()
      })
    )
    .subscribe((x) => console.log(x));

不要 return 空数组,而是 return 发出单个标记值的可观察对象。

const SENTINEL = Symbol();

of(1)
  .pipe(
    mergeMap((x) => of(SENTINEL)),
    distinct(),
    mergeMap((x) => {
      if (x === SENTINEL) return fulfilled();
      // etc.
    })
  )
  .subscribe((x) => console.log(x));