【问题标题】:RxJs 5 of.filter.mapTo operators -> RxJs 6RxJs 5 of.filter.mapTo 运算符 -> RxJs 6
【发布时间】:2021-01-16 19:18:05
【问题描述】:

我继承了一些旧的RxJs 5 代码,闻起来很尴尬:

  myFunc = (tag: TagModel): Observable<TagModel> => {
    try {
      const foundTag = this.mappedTags.find((x) => {
        return x.name === tag;
      });
      const isAllowedToAdd = foundTag ? false : true;

      return Observable
        .of(tag)
        .filter(() => isAllowedToAdd)
        .mapTo(tag);

    } catch (err) {
      console.log("err: ", err);
    }
  }

该代码的目的是创建一个 Observable,如果找到它,则其值为 tag ,否则为空?它看起来很复杂(加上一些我不能在这里分享的其他选择词)。

RxJs 引入了重大更改,其中 ofmapTo 不再可链接。这会是正确的重构方式吗?

  return of(tag)
    .filter(() => isAllowedToAdd)
    .pipe(mapTo(tag));

【问题讨论】:

  • of(tag).pipe(filter(() =&gt; isAllowedToAdd))
  • 请将const isAllowedToAdd = foundTag ? false : true; 更改为const isAllowedToAdd = !foundTag;

标签: rxjs observable rxjs5 rxjs6


【解决方案1】:

下面应该可以工作

  myFunc = (tag: TagModel): Observable<TagModel> => {
    try {
      const foundTag = this.mappedTags.find((x) => x.name === tag);
      const isAllowedToAdd = !foundTag;

      return of(tag).pipe(
        filter(() => isAllowedToAdd)
      )
    } catch (err) {
      console.log("err: ", err);
    }
  }

记得包含import { of } from 'rxjs'import { filter } from 'rxjs/operators'

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 2017-04-28
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    相关资源
    最近更新 更多