使用 flux 处理多个异步调用
Handling multiple async calls with flux
我有一个 Calendar
组件,当使用名为 LoadOnMount
的特定道具渲染时,它需要调用服务器来加载一组航班。
问题是我通过监听 CalendarStore
的 Events.UPDATE
事件来更新日历,该事件由我的 Dispatcher 调度的 UPDATE_CALENDAR
动作触发,然后我加载使用另一个名为 LOAD_FLIGHT_LIST
的操作的航班集。因此,当我从 Calendar
组件的 ComponentDidMount
函数调用这个新操作时,我得到了 cannot dispatch in the middle of a dispatch
错误。
有什么方法可以处理这些依赖关系吗? (日历也是从服务器获取的)
你有两个问题我可以确定:
首先是您试图让调度员在 调度期间调度。那不是你应该做的。
第二个是您似乎正在执行来自 内部 调度处理程序的 AJAX/async 调用。我不想说你永远不应该那样做,但在你的应用程序中似乎没有必要。
这里是 link 我认为类似的另一个堆栈溢出问题:
不同之处在于提问者试图从他的调度处理程序中执行一个 Ajax 调用,而你似乎正在尝试调度一个事件,该事件反过来会触发一个 ajax 调用在活动处理期间。
您可以做的是创建一个异步加载航班列表的操作,然后调度 FLIGHT_LIST_LOADED
操作,然后将获取的航班列表传递给它。您的商店应该处理此操作并为所有组件观察者广播更改事件。
我希望你明白我在说什么。如果您认为我误解了您的问题,请告诉我。
我有一个 Calendar
组件,当使用名为 LoadOnMount
的特定道具渲染时,它需要调用服务器来加载一组航班。
问题是我通过监听 CalendarStore
的 Events.UPDATE
事件来更新日历,该事件由我的 Dispatcher 调度的 UPDATE_CALENDAR
动作触发,然后我加载使用另一个名为 LOAD_FLIGHT_LIST
的操作的航班集。因此,当我从 Calendar
组件的 ComponentDidMount
函数调用这个新操作时,我得到了 cannot dispatch in the middle of a dispatch
错误。
有什么方法可以处理这些依赖关系吗? (日历也是从服务器获取的)
你有两个问题我可以确定:
首先是您试图让调度员在 调度期间调度。那不是你应该做的。
第二个是您似乎正在执行来自 内部 调度处理程序的 AJAX/async 调用。我不想说你永远不应该那样做,但在你的应用程序中似乎没有必要。
这里是 link 我认为类似的另一个堆栈溢出问题:
不同之处在于提问者试图从他的调度处理程序中执行一个 Ajax 调用,而你似乎正在尝试调度一个事件,该事件反过来会触发一个 ajax 调用在活动处理期间。
您可以做的是创建一个异步加载航班列表的操作,然后调度 FLIGHT_LIST_LOADED
操作,然后将获取的航班列表传递给它。您的商店应该处理此操作并为所有组件观察者广播更改事件。
我希望你明白我在说什么。如果您认为我误解了您的问题,请告诉我。