我正在学习反应性香蕉,并打算在服务器端应用程序中使用它.我在RxJs中有一些背景,所以我习惯将事件与不同的组合器结合起来.所以我从简单的事件组合器示例开始.我试图制作一个简单的反应香蕉示例,它将两个整数事件组合成一个sum事件.我理解为了能够组合来自不同事件的值,我必须首先将它们变为行为,然后进行组合并最终将其变为新事件.我就这样做了:
-- Behaviors from Events e1, e2
let b1 = stepper 0 e1 :: Behavior Int
let b2 = stepper 0 e2 :: Behavior Int
-- Sum Behavior
let sumB = (+) <$> b1 <*> b2
-- Back to Event
let sumE = sumB <@ (e1 `union` e2)
Run Code Online (Sandbox Code Playgroud)
完整的可运行示例可以在Gist 1594917中找到.
这里的问题是,当一个事件(e1,e2)中出现一个新值时,sumE事件被正确触发,但它包含一个陈旧值.这显然是由于步进器的工作原理(行为的值在事件发生后稍微改变).我尝试用Discrete替换Behavior,结果相同.
是否有一种简单的方法可以使这种事件组合器正常工作?
当测试失败时,我正在比较使用的两个对象expect(x).to.deep.equal(y),我想在浏览器测试报告中看到实际值.相反,我看到这样的事情:
AssertionError: expected { Object (x, y, ...) } to deeply equal { Object (x, y, ...) }
Run Code Online (Sandbox Code Playgroud)
所以它并没有真正显示任何有用的东西.
有没有办法自定义chai.js如何格式化这些对象?
有没有办法让格拉法纳的普罗米修斯计数器真正单调?
每当服务器重新启动时,我的服务器上的计数器(使用Prometheus Java库)都会重置,而Grafana中的计数器也会降至零.我在Prometheus查询的文档中找不到方法.Java库也没有提供使计数器在重新启动时持久化的方法.
有没有办法在不切换到使用iter而不是使用的情况下进行这项工作into_iter?
let strings: Vec<String> = vec!["1 2".to_string(), "3 4".to_string()];
strings.into_iter().flat_map(|str| str.split(" "));
Run Code Online (Sandbox Code Playgroud)
问题是
let strings: Vec<String> = vec!["1 2".to_string(), "3 4".to_string()];
strings.into_iter().flat_map(|str| str.split(" "));
Run Code Online (Sandbox Code Playgroud)
当使用iter代替时into_iter,我得到一个引用迭代器,一切正常,但我想知道是否有可能在Strings的迭代器上进行这项工作。