Javascript 什么是Bacon.js中的惰性评估?
我无法理解Bacon.js中的懒惰评估是什么 我使用map和flatMap编写了Bacon提供的示例,得到了相同的结果 这是HTMLJavascript 什么是Bacon.js中的惰性评估?,javascript,rxjs,frp,bacon.js,Javascript,Rxjs,Frp,Bacon.js,我无法理解Bacon.js中的懒惰评估是什么 我使用map和flatMap编写了Bacon提供的示例,得到了相同的结果 这是HTML <input id="itemname" type="text" /> <input id="additem" type="button" value="Add Item" /> <input id="purchase" type="button" value="Purchase" /> 下面是使用flatMap的JS代码 v
<input id="itemname" type="text" />
<input id="additem" type="button" value="Add Item" />
<input id="purchase" type="button" value="Purchase" />
下面是使用flatMap的JS代码
var items = $("#additem").asEventStream("click").flatMap(function(e){
console.log("Executing");
return document.getElementById("itemname").value;
}).toProperty();
var submittedItems = items.sampledBy($("#purchase").asEventStream("click"));
对于这两个版本的JS,即使单击按钮,也不会记录任何内容。根据文档,第二个应该在控制台上输出“正在执行”消息
如果我使用onValue连接订户,这两个代码都可以工作
请帮助我了解出了什么问题?当您创建一个基于另一个流的流时,例如通过调用不订阅原始
流的stream.sampledBy(…)
。不管有多少创建流从流函数你们链在一起。因此,$(“#添加项”).asEventStream(“单击”)
不会导致订阅,.map(…)
或.toProperty()代码>
只有在专门记录为订阅流的调用时,才进行实际订阅。它们列在此处的“EventStreams和属性中的常用方法”下:-即subscribe()
,onValue()
,onValues()
,onError()
和onEnd()
。如果您不关心事件,可以使用submittedItems.oned(function(){})代码>它从未被实际调用,因为您的流从未结束
var items = $("#additem").asEventStream("click").flatMap(function(e){
console.log("Executing");
return document.getElementById("itemname").value;
}).toProperty();
var submittedItems = items.sampledBy($("#purchase").asEventStream("click"));