问题标签 [redux-observable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
563 浏览

rxjs5 - RxJS 5 - 函数调用两次

在使用 RxJS 删除一行之前,我试图显示一个确认模式。

  • 如果我删除 1 行,下面的代码可以正常工作。
  • 当我删除第二行时,deleteLineFulfilled调用了 2 次。
  • 如果我删除第三行,则deleteLineFulfilled调用 3 次,依此类推...

知道为什么吗?

0 投票
1 回答
80 浏览

javascript - 史诗中的功能出现故障,我不明白为什么

*已解决问题在于我如何创建和响应由 firebase 回调创建的 observable。我的 firebase 回调中也发生了太多事情。我最终使用firebase承诺结构将其拆分了一点:https ://firebase.googleblog.com/2016/01/keeping-our-promises-and-callbacks_76.html 并为firebase创建了一个 Observable.fromPromise现在称为 firebaseAPI.checkForUser 中的回调。*

工作史诗:

// 原始问题

好的,我要实现的是执行第一个操作(firebaseAPI.checkUserAndUpdate),然后执行下一个操作,然后当它们都完成后,基本上丢弃那里的内容并发送两个操作(contactFormFirebaseSuccess 和 stopLoading)。

这一切都很好,除了一件奇怪的事情,setQuoteData 函数总是在 checkUser 函数之前运行。有谁知道这可能是为什么?

此外,如果有更好的方法来解决这个问题,我会非常愿意接受建议!干杯。此外,我还去掉了很多变量和一些会使它变得更加复杂的东西。基本上,我只是想表明,在每种情况下,我都会从“用 firebase 做某事”中返回一个可观察的。但我认为这不是问题,因为我在每个 firebase 函数中都有控制台日志,而 setQuoteData 只是首先触发,然后执行 firebase 内容,然后在完成后运行 checkUserAndUpdate 。

0 投票
2 回答
637 浏览

rx-java - 在第一个请求完成之前忽略操作的史诗

我和一位同事向我们的 android 应用程序添加了一个类似 redux-observable 的流程,但无法弄清楚如何创建一个在第一次调用完成之前停止接收操作的史诗。

最初我以为我们可以使用skipUntil(),但后来意识到结果skipUntil()被吞下,并且从未传递给链条的其余部分。

下面是一些粗略的 JS 代码,展示了我们希望完成的工作。

这几乎就像我需要一个skipMap()操作员,它的行为就像switchMap()但一次只尊重一个请求,而如果一个可观察的正在进行,则忽略所有项目。

感谢您的任何建议。

0 投票
1 回答
264 浏览

redux - redux observable:为什么不能在测试中获取所有操作

我正在尝试测试“redux observable epic”,但测试失败,因为并非所有操作都在 store.getActions() 中,奇怪的是 store.dispatch 函数运行。

史诗和动作

测试

测试结果

1)“actions/auth 应该为 verifySesion 调用史诗:错误:预期 [{ type:'auth/VERIFY_SESION'}] 包括 { token:'mitoken', type:'auth/AUTHENTICATE'}”

笔记

我确定条件令牌!== null pass

0 投票
1 回答
480 浏览

reactjs - 如何使用 redux 在 react/react-native 中执行经常性事件?

我正在做一个反应本机应用程序,在用户的某些操作上将开始跟踪 gps 位置,并在其他停止。

但是我遇到了一些障碍,没有找到执行这种基于时间的位置跟踪器的正确方法,因为这种模式看起来并不自然。以下是我的想法:

  1. 使用 . 将其视为异步redux-thunk
  2. 使用redux-observable定时事件。
  3. 使用sagas.
  4. SetTimeout我的component(是最简单的解决方案,但我不想阻止我的用户四处导航,我不认为这是 UI 责任)中使用
0 投票
0 回答
73 浏览

redux-observable - 引导史诗

我想知道在应用程序加载时是否有触发史诗的最佳实践?我可以想到几个方法:

  • 调度一个通用的初始化动作。
    • 有效负载只能具有通用数据,因此如果您的史诗依赖于通过操作获取数据,则效果不佳。
    • 单一调度和运行减速器/史诗。
    • 语义,因此易于理解。
  • 为每个史诗调度一个特定的动作。
    • 不需要更改史诗
    • 创建许多不必要的调度调用,因为动作是在商店中已经存在的状态下调度的。
  • 使用startsWith 运算符。
    • 非常适合开始且从未改变的史诗。
    • 可以使用来自 store.getState() 的数据创建相关操作,但是内联操作有点乏味。

这些不同的方法各有优缺点,但我很想看看我是否遗漏了一些明显的或内置的东西。

在文档配方中介绍这一点会很好吗?

0 投票
1 回答
1423 浏览

rxjs - RxJS and redux-observable: delay(time) is not applied correctly after mapTo()

I am trying to dispatch 'SET_MIDDLEWARE_TYPE' action with payload.type = 'observable', wait 5 seconds and then make an API call. Currently, the SET_MIDDLEWARE_TYPE action is not being dispatched. If I remove the delay and the mergeMap, it dispatch that action.

Expected: FETCH_USER_WITH_OBSERVABLE_REQUEST --> SET_MIDDLEWARE_TYPE (wait 5 seconds) --> FETCH_USER_WITH_OBSERVABLE_SUCCESS

Actual: FETCH_USER_WITH_OBSERVABLE_REQUEST --> (wait 5 seconds) --> FETCH_USER_WITH_OBSERVABLE_SUCCESS

How can I obtained the expected behavior?

Code:

0 投票
3 回答
518 浏览

rxjs - redux-observable:一旦另一个动作被触发至少一次就映射到一个动作

我有一个 SPA,它正在从服务器加载一些全局/共享数据(我们称之为 APP_LOAD_OK)和特定于页面的数据(DASHBOARD_LOAD_OK)。我想显示加载动画,直到 APP_LOAD_OK 和 DASHBOARD_LOAD_OK 都被调度。

现在我在用 RxJS 表达这个问题时遇到了问题。我需要的是在每个 DASHBOARD_LOAD_OK 之后触发一个动作,只要至少有一个 APP_LOAD_OK。像这样的东西:

有人知道,我如何用有效的 RxJS 表达它?

0 投票
1 回答
849 浏览

javascript - 在 rxjs 中实现 fromSubscriber

我今天遇到了一个有趣的问题。我正在开发一个我们有文件上传的应用程序,我们想要实现一个进度条。该应用程序是使用 React/Redux/Redux-Observable 编写的。我想为上传进度调度操作。这是我为实现它所做的:

我有一门课用来发出我所有的 ajax 请求。使用传入的参数this.ajax调用。Observable.ajax

这是我的史诗。我找回了订阅者,并编写了一个自定义静态方法Observable来接收订阅者。然后我将它与Request(这是一个Observable)合并。

最后,这是我写的自定义静态方法Observable。我写这篇文章有两个原因。1. 作为其他处理类似问题的人的示例(我花了很多时间试图弄清楚如何在编写自己的之前Observable从 a中创建一个)和 2. 询问这是否是实现此目标的最佳方法Subscriber. rxjs很深,我认为有一种现有的方法可以做到这一点,但我就是找不到。

0 投票
1 回答
1610 浏览

javascript - 使用 takeUntil 完成一个 RxJS 流

我想使用运算符完成一个不能自然完成的内部流takeUntil,如下所示:

这可行,内部流按预期完成,但我希望外部流在停止信号之后返回最后一个值。即使经过大量的谷歌搜索,我仍然不知道如何。

编辑:

我写了一个似乎可以解决问题的运算符,但是因为我知道有更好的方法或我完全误解的东西,所以让问题悬而未决。