Лично я бы посчитал плохой практикой № 2 с точки зрения rxjs - я прав? Какой из способов ниже предпочтительнее с точки зрения производительности и почему?

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

Или

source$.subscribe(({someValue}) => {
   workWithData(someValue)
})
1
godblessstrawberry 2 Апр 2020 в 10:43
1
По производительности второй однозначно лучше. Деструктуризация всегда быстрее, чем использование операторов.
 – 
martin
2 Апр 2020 в 11:25
Может посоветуете что почитать по этому поводу? Я знаю, что useSelector из Redux не рекомендует вытягивать все состояние, а затем деструктурировать - вместо этого рекомендуется отображать его.
 – 
godblessstrawberry
2 Апр 2020 в 16:17

1 ответ

Я не думаю, что производительность является главным вопросом здесь, это больше касается вашего намерения. Второй лучше, потому что вы вызываете меньше функций.

Если вы планируете использовать отображенный наблюдаемый поток в других частях вашего приложения, вы должны использовать первый, например:

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

Если вам не нужен sourceKeys$ в качестве наблюдаемого, вы можете выполнять все побочные эффекты и операции с данными в блоке subscribe.

2
ganqqwerty 18 Апр 2020 в 03:47