Как я могу получить последнее значение состояния? без подписки (RxJS)

#javascript #angular #rxjs

Вопрос:

у меня есть это на фасаде

 chatMessagesState$ = this.store.pipe(select(ChatMessageSelectors.getChatMessagesState));    

это на селекторе

 export const getChatMessagesState = createSelector(  getChatMessages,  (payload: ChatMessagesState) =gt; payload );  

и это по компоненту

 this.chatMessagesSub = this.chatMessagesFacade.chatMessagesState$.subscribe(state =gt; {  if (state.messages) {  // do something  }  });    

как я могу принять состояние, не подписываясь?

Комментарии:

1. Я видел, что есть какой-то объект поведения

Ответ №1:

 constructor(private storeState: Statelt;YourStategt;)   const state = this.storeState.value['your-state'];  

Если вам нужно принять значение только 1 раз

Ответ №2:

Один из способов-преобразовать Observable в a Promise и использовать async-await :

 async getStateValue(){  const state=await this.chatMessagesFacade.chatMessagesState$.toPromise();  return state;  }  

Примечание: Этот метод противоречит назначению наблюдаемых объектов, потому что вы не сможете прослушивать вносимые изменения. Обещание будет либо разрешено/отклонено только один раз.

Комментарии:

1. Zoneawareprom { зона_символ__состояние: null, _zone_symbol_ значение: Массив(0)} _zone_symbol_ состояние: null _zone_symbol_ значение: [] Символ(Символ.toStringTag): (…) Символ(Символ.вид): (…) __прото : Объект

2. не работает 🙁