У меня есть основание c сомнений по поводу использования Observable-Subscription от rx js.
Можно ли использовать функциюlateLatest () для двух наблюдаемых (dataStore1, dataStore2) даже хотя для них существует отдельная подписка !!
Если я кеширую данные из магазина (например: this.currentDataStore_1_Value and this.currentDataStore_2_Value
), я смогу избежать использования комбинатаПоследний (), тем самым 3 подписки сократятся до 2 ; но нужно кэшировать значения !!
Подписка на хранилище данных 1
this.dataStore1
.data1$
.subscribe(
(data1) => {
this.currentDataStore_1_Value = data1 // Is this ok to cache the data
myCommonFunc()
myData_1_Func(data1)
}
)
Подписка на хранилище данных 2
this.dataStore2
.data2$
.subscribe(
(data2) => {
this.currentDataStore_2_Value = data2 // Is this ok to cache the data
myCommonFunc()
myData_2_Func(data2)
}
)
Common Fun c, который использует кэшированные значения
func myCommonFunc() {
// use this.currentDataStore_1_Value and this.currentDataStore_2_Value
}
Specfi c Fun c, чтобы использовать данные каждой строки данных
func myData_1_Func(data1) {
// use this.currentDataStore_1_Value & this.currentDataStore_2_Value
}
func myData_2_Func(data2) {
// use this.currentDataStore_1_Value and this.currentDataStore_2_Value
}
Подписка по комбайнуПоследний DataStore 1, 2
combineLatest(
this.dataStore1.data1$,
this.dataStore2.data2$
)
.subscribe(
([data1, data2]) => {
// Separate subscription won't cache the result
// or call myCommonFunc()
myCommonFunc(data1, data2)
}
)
Итак, вопрос, что эффективно?
- меньшее количество подписок (2) и кэширование данных (2 данных)
- максимальное количество подписок (2 + 1 вместе) и без кеша