You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I would like to use asyc/await instead of flux async actions with action.completed/action.failed child actions, but after staring at some of the issues related to async actions, I'm unsure how to proceeds. I've looked at this one in particular:
The core of what I am trying to accomplish is to call two async actions aimed at to different stores, one after the other in a React component as follows:
// Inside some React class componentasynccomponentDidMount(){// Aimed at the `ChannelQueueStore`awaitChannelQueueActions.loadTickets(this.props.loggedInAgent);// Aimed at the `ChatStore`awaitChatActions.updateChannel(this.state.selectedChannel);}
My ChannelQueueStore as currently implemented is defined below, and as written the above code does not work. ChatActions.updateChannel is triggered immediately after ChannelQueueActions.loadTickets instead of waiting.
I'm wondering if someone can suggest a way to refactor the below code so the above will work.
// Inside my `ChannelQueueStore` storeexportdefaultclassChannelQueueStoreextendsReflux.Store{constructor(){super();this.state={selectedChannel: null,channels: []};this.tw=newTwilioWrapper();// Has a bunch of promise returning async functionsthis.listenTo(ChannelQueueActions.loadTickets,this.onLoadTickets);}asynconLoadTickets(agentID){// getOpenChannelsOwnedbyAgentSerialized is an `async` function, use await to wait until its done.letchannels=awaitthis.tw.getOpenChannelsOwnedbyAgentSerialized(agentID);this.setState({selectedChannel: channels[0].uniqueName,channels: channels});}}
I could call ChatActions.updateChannel(this.state.selectedChannel) from at the end of onLoadTickets, which works but seems like bad form, and I think putting both action calls in the component itself makes it easier to see whats going on in the component.
Thx.
The text was updated successfully, but these errors were encountered:
What you are trying to achieve is what gaearon/redux-thunk or redux-saga/redux-saga does for redux.
That is chain together asynchronous operations/side-effects.
I would like to use
asyc
/await
instead of flux async actions withaction.completed
/action.failed
child actions, but after staring at some of the issues related to async actions, I'm unsure how to proceeds. I've looked at this one in particular:#524
The core of what I am trying to accomplish is to call two async actions aimed at to different stores, one after the other in a React component as follows:
My
ChannelQueueStore
as currently implemented is defined below, and as written the above code does not work.ChatActions.updateChannel
is triggered immediately afterChannelQueueActions.loadTickets
instead of waiting.I'm wondering if someone can suggest a way to refactor the below code so the above will work.
I could call
ChatActions.updateChannel(this.state.selectedChannel)
from at the end ofonLoadTickets
, which works but seems like bad form, and I think putting both action calls in the component itself makes it easier to see whats going on in the component.Thx.
The text was updated successfully, but these errors were encountered: