RxJS 6 - flatMap 条件

RxJS 6 - flatMap condition

我有一个表单可以在后端创建一个项目,并且可以选择另一个资源,具体取决于用户是否选择了一个复选框。第二个资源只能在第一个资源创建之后创建。我想出了这段代码,但我认为这不是正确的做法,尤其是复选框未被选中的部分,我不得不 return 一个无意义的 Observable。有什么帮助吗?

this.myService.createArticle(article)
  .flatMap(_ => {
    if (this.checkbox) {
      return this.mailer.createOtherResource(data);
    } else {
      return Observable.of('done');
    }
  });

我也试过 returning 一个 EmptyObservable,但它不起作用。

即使此问题与 重复,但由于 RxJS 版本的不同,存在一些差异。在 RxJS 6 中,这将与此类似:

this.myService.createArticle(article)
  .pipe(
    filter(() => this.checkbox),
    flatMap(() => return this.mailer.createOtherResource(data)),
  });