我有一个称为initialiseApp的操作,显然它会初始化应用程序。我需要从服务器中获取一些信息,例如用户信息,样式和正在显示的页面的一些细节(它是单页应用程序)。我正在使用redux-sagas,我无法弄清楚链接异步操作的方式,以便它们按顺序发生,而不是并行。使用redux-sagas链接异步操作
我需要在调用用户信息之前请求任何样式信息,因为在服务器端,用户的调用会去并检索用户并在会话中设置一些东西。因为这些样式目前并行请求,所以它显示错误,因为用户尚未在服务器上设置。
所以我用put.sync尝试,但似乎并没有工作,但这里是我到目前为止的代码(我还使用打字稿的方式):
private *invokeAndWaitOn(action: IAction<any>) {
const putSync = (put as any).sync; // The typings file for redux-sagas does not yet include put.sync
yield putSync(action);
}
private *invokeArrayOfActions(actions: IAction<any>[]) {
for (let action of actions) {
yield* this.invokeAndWaitOn(action);
}
}
但这似乎没有工作,我找不到任何如何正确使用redux-saga的put.sync效果的例子。
任何人都可以看到我做错了什么,或者有没有更好/正确的方法来做到这一点?
在此先感谢。
感谢您的回复,这是非常全面的,事实上回答了这个问题。然而,我忽略说(完全是我的错),我没有直接访问这个传奇故事的自己(就像我实现它的方式),我只能访问这些行为。我可以称之为行动,但不是实际的传奇故事。我可以重新编写它来直接访问这个传奇故事,但是如果有一种方法可以使用put或put.sync,那么需要进行大量的返工,这对我目前的情况会更好一些? – Anupheaus
呃,实际上,只要你在放置一个发生器之前把关键字'yield'放到发生器中,所以它已经是同步的了。无论哪种方式,你都需要另一个操作来处理成功,这样你就可以在你的情况下聆听成功。 –