如何使用redux-observable在一部史诗中发出多个动作?

时间:2019-05-23 00:55:50

标签: reactjs typescript rxjs redux-observable

我是rxjs / redux可观察的新手,想做两件事:

1)改进此史诗使其更加惯用

2)从单个史诗中调度两个动作

我看到的大多数示例都假设api库在获取失败时将引发异常,但是我将自己的代码设计为更具可预测性,并且使用Typescript联合类型,我不得不检查{ 1}}值,然后才能解压结果,因此了解如何在rxjs中执行此操作更具挑战性。

改善以下内容的最佳方法是什么?如果请求成功,我既要发出成功操作(表示用户已被授权),又要发出“提取帐户”操作,这是一个单独的操作,因为有时可能需要从外部提取帐户只是“登录”。任何帮助将不胜感激!

ok: boolean

2 个答案:

答案 0 :(得分:1)

docs for switchMap表示项目功能(您的示例中的lambda)可能返回以下内容:

void test() {
    Foo f;
    f.bar.a = 5;
}

返回type ObservableInput<T> = SubscribableOrPromise<T> | ArrayLike<T> | Iterable<T> 时,仅发出解析值。在您的示例中,如果您从Promise<T>范围返回数组,则 array 将直接发送到Redux存储。假设您没有特殊的Redux中间件设置来处理一系列事件,那么这可能不是您想要的。相反,我建议在项目函数中返回一个observable。这是对您的示例的略微修改:

async

我没有您的TypeScript类型定义,所以我无法验证上面的示例是否正确。但是,我使用TypeScript,RxJS和redux-observable的最新版本取得了相当不错的成绩。上面没有什么让我觉得您应该遇到任何问题的。

答案 1 :(得分:0)

您可以压缩您的操作并将其返回。

zip(actions.attemptLogin.success({
            token: resp.value
          })
          // EMIT action 2, etc...

这样,现在您的两个动作都将被调用。