用于映射一个 属性 但流式传输整个对象的 rxjs 快捷方式

rxjs shortcut for mapping of one property but streaming the whole object

我想操纵一个对象的属性但流式传输整个对象

这个美女有捷径吗?

Observable.of(data)
  .map((data) => {data.newDueDate = this.filterDate(data.newDueDate); return data;})
  .map((data) => {data.reply = this.generateReply(data.request); return data;})
  ...

我正在寻找这样的东西,所以我可以在 清晰的原子步骤 中更改 data 对象。

Observable.of(data)
  .mapProperty('newDueDate' => this.filterDate)
  .mapProperty('reply' => this.generateReply(data.request))
  ...

您可以使用 do:

Observable.of(data)
  .do(data => {
     data.newDueDate = this.filterDate(data.newDueDate);
     data.reply = this.generateReply(data.request);
  })

编辑评论:

Observable.of(data)
  .do(data => data.newDueDate = this.filterDate(data.newDueDate))
  .do(data => data.reply = this.generateReply(data.request))

您可以这样做或创建或拥有自定义运算符,但我认为这太多了。

好吧,我认为您可以将这两种操作都添加到第一个 map() 中,但我同意它看起来有点蹩脚,因此您可以使用 Object.assign() 例如:

Observable.of(data)
  .map(d => Object.assign(d, {
    newDueDate: this.filterDate(data.newDueDate),
    reply: this.generateReply(data.request),
  }))