问题标签 [kefir.js]

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 回答
789 浏览

rxjs - 在满足条件之前忽略流中的事件?

我从按钮单击事件创建了一个流。该按钮对应于数据库上的创建操作。显然,我希望数据库操作只触发一次(至少在它完成之前)。有没有办法在返回createButtonStream之前忽略事件Api.create?即,第一个事件应该调用#Api.create,后续事件应该被忽略,直到#Api.create 返回。

想到的唯一方法是使用全局状态......我宁愿不这样做。

0 投票
1 回答
833 浏览

javascript - EventEmitter vs RxJS vs Kefir

我想比较 JS EventEmitter 和 RxJS 的性能。我编写了以下基准脚本来做到这一点:

性能测试

性能结果

如您所见,与此链接上的声明相反,Kefir 的速度最慢。

  1. 我在写测试时做错了吗?
  2. 如果有人能解释为什么会发生这种差异,那就太好了。特别是当您将它与 javascript 事件发射器进行比较时。
0 投票
1 回答
40 浏览

reactive-programming - 在响应式编程中推送值时指数时间和不一致的瞬态值?

我对反应式编程相当陌生,我开始使用kefirjs。从表面上看, bacon /kefir 的事件流和属性本质上是一种表达随时间变化的依赖/计算 dag 的方式,并且有一些巧妙的方法可以将这些 dag 连接到 DOM 事件和 UI。好的听起来不错。

我知道,一般来说,当你有一个计算 dag 时,如果你改变单个上游节点的值并天真地递归地向下游推送计算,那么众所周知的问题是:

  1. 相对于受影响的 dag 节点的数量,它需要指数级的时间

  2. 中间计算使用输入节点的先前值和当前值的混合,导致奇怪/不一致的瞬态输出值。

我从玩一些简单的玩具程序中看到,kefir 天真地进行了此类更新,因此 (1.) 和 (2.) 确实发生了。(我没试过培根。)

这些不被认为是问题吗?

例如,在下面的程序中,我希望输出 x6 直接从 64 更改为 640,代价是 12 次组合器评估(最初 6 次,单次更新触发 6 次)。相反,输出为 64,73,82,91,...,622,631,640(63 个无意义的中间值),代价是 132 个组合器评估(最初是 6 个,这是有道理的,然后是 126 个用于更新,这是多余的) .

https://codepen.io/donhatch/pen/EXYqBM/?editors=0010

我很困惑,开菲尔显然没有尝试有效地进行此类更新。我认为这将使它成为真正的应用程序的初学者。

也许我误解了反应式编程的用途。在现实生活中的响应式应用程序中遇到的 dags 总是树,还是什么?

0 投票
1 回答
159 浏览

javascript - 以间隔进行异步请求的冷静方式?

以间隔进行重复(无限)异步作业的最优雅的方式是什么(在Calmm stack、Kefir、Karet Utils 等)?

我想要get一些 json 每个2000ms.

示例 1(2000 毫秒间隔):

  1. 获取 json(get需要 100 毫秒)
  2. 处理json
  3. 等待间隔剩余的时间,然后从步骤 1 重新开始

示例 2(2000ms 间隔)

  1. 获取 json(get需要 5000 毫秒)
  2. 处理json
  3. 等到第 1 步和第 2 步完成后再从第 1 步开始

所以简而言之,我想重复s (或任何异步工作)并在请求之间get等待最少的时间。2000ms

我不希望在前一个请求以某种方式完成(成功、失败、超时)之前触发下一个请求。

0 投票
1 回答
57 浏览

reactjs - 我应该如何使用 CalmmJS 和 React 在组件 MouseClick 上触发 XHR?

我想要的是XHR.perform使用 CalmmJS 和 React 触发 onMouseClick - 我正在尝试以下代码,不必要的部分已编辑:

目前我只是试图触发网络请求,而不是对结果做任何事情。相反,XHR.perform只是被吞没了。我究竟做错了什么?

PS:请有人用 karet 或 karet.util 标记我的帖子,因为我无法创建标签。谢谢你的帮助!