【发布时间】:2016-01-31 17:16:31
【问题描述】:
我无法理解 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" />
这是使用地图的代码的JS
var items = $("#additem").asEventStream("click").map(function(e){
console.log("Executing");
return document.getElementById("itemname").value;
}).toProperty();
var submittedItems = items.sampledBy($("#purchase").asEventStream("click"));
这里是使用 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 附加订阅者,这两个代码都可以工作。
请帮助我了解问题所在?
【问题讨论】:
标签: javascript rxjs frp bacon.js