Bacon.when不按预期匹配流

时间:2014-10-25 17:24:07

标签: javascript frp bacon.js

在试验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);  

每个流都适当地发出值,但连接模式永远不会匹配。

Fiddle

1 个答案:

答案 0 :(得分:2)

你永远不会对Bacon.when的结果做任何事情,所以懒惰的评估会导致永远不会调用postFormData。

根据经验,导致副作用的事情,比如将数据发布到服务器,应该在onValue处理程序中完成。应该使用纯函数来组合不同的EventStream。

我在最后添加.log更新了您的fiddle