在试验Bacon.js时,我遇到了以下意外行为:
var email = $("#email")
.asEventStream("keyup")
.map(function(event) {
return $(event.target).val();
})
.log();
var validEmail = email.map(validateEmail).log();
// submit.doAction('.preventDefault'); isn't working for some reason
$('form').on('submit', function (event) { event.preventDefault() });
var submit = $('form').asEventStream('submit');
// postFormData is never called
Bacon.when([email, validEmail, submit], postFormData);
每个流都适当地发出值,但连接模式永远不会匹配。
答案 0 :(得分:2)
你永远不会对Bacon.when
的结果做任何事情,所以懒惰的评估会导致永远不会调用postFormData。
根据经验,导致副作用的事情,比如将数据发布到服务器,应该在onValue
处理程序中完成。应该使用纯函数来组合不同的EventStream。
我在最后添加.log
更新了您的fiddle。