我是rxjs / redux可观察的新手,想做两件事:
1)改进此史诗使其更加惯用
2)从单个史诗中调度两个动作
我看到的大多数示例都假设api库在获取失败时将引发异常,但是我将自己的代码设计为更具可预测性,并且使用Typescript联合类型,我不得不检查{ 1}}值,然后才能解压结果,因此了解如何在rxjs中执行此操作更具挑战性。
改善以下内容的最佳方法是什么?如果请求成功,我既要发出成功操作(表示用户已被授权),又要发出“提取帐户”操作,这是一个单独的操作,因为有时可能需要从外部提取帐户只是“登录”。任何帮助将不胜感激!
ok: boolean
答案 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...
这样,现在您的两个动作都将被调用。