redux-observable - 等待异步操作并使用rootEpic将它们转换为Promise

时间:2018-02-23 14:38:57

标签: redux promise rxjs redux-observable

next.js repository中的示例显示了我们如何将根史诗转换为Promise,因此可以像requestAccess那样await异步操作:

ajax

我想知道如何static async getInitialProps ({ store, isServer }) { const resultAction = await rootEpic( of(actions.fetchCharacter(isServer)), store ).toPromise() // we need to convert Observable to Promise store.dispatch(resultAction) return { isServer } } 不止一次行动。我设法这样做了:

await

...但我想知道每次调用const actions = await Promise.all([ rootEpic(of(fetchCharacterOne()), store).toPromise(), rootEpic(of(fetchCharacterTwo()), store).toPromise(), rootEpic(of(fetchCharacterThree()), store).toPromise(), ]); actions.forEach(store.dispatch); 是否有更简单的方式 - 我的意思是用三个动作来等待一次。

1 个答案:

答案 0 :(得分:0)

我在universal-rxjs-ajax文档中意外地找到了答案。这就是我要找的代码:

const initialData$ = of(
  fetchCharacterOne(),
  fetchCharacterTwo(),
  fetchCharacterThree(),
);

const actions = await rootEpic(initialData$, store)
  .pipe(toArray()) // buffers all emitted actions until Epic completes
  .toPromise();

actions.forEach(store.dispatch);