【问题标题】:RxJS map operator vs destructuring performanceRxJS 映射运算符与解构性能
【发布时间】:2026-02-08 06:05:01
【问题描述】:

rxjs 而言,我个人认为#2 是不好的做法——对吗? 就性能而言,以下哪种方式更可取,为什么?

source$.pipe(
   map(s => s.someKey)
).subscribe(someValue => {
   workWithData(someValue)
})

source$.subscribe(({someValue}) => {
   workWithData(someValue)
})

【问题讨论】:

  • 就性能而言,第二个肯定更好。解构总是比使用运算符快。
  • @martin 你能给出什么建议吗?我知道来自 redux 的 useSelector 不建议拉整个状态然后解构 - 它建议改为映射它

标签: rxjs reactivex


【解决方案1】:

我不认为性能是这里的主要问题,更多的是关于你的意图。第二个更好,因为您调用的函数更少。

如果您打算在应用程序的其他部分使用映射的 observable 流,则应使用第一个,如下所示:

const sourceKeys$ = source$.pipe(
   map(s => s.someKey)
);
sourceKeys.subscribe(someValue => {
   workWithData(someValue)
})

如果您不需要 sourceKeys$ 作为 observable,您可以在 subscribe 块中执行所有副作用和数据操作。

【讨论】: