这是一些简化的代码。我按一个按钮,它设置了一些配置。然后,当用户提交表单时,需要读取配置的最新值。我正试图成为所有FRP,避免设置正常变量。
var currentConfig = $('#authenticateCont #btnFormType')
.asEventStream('click')
.map(function (e) {
...
});
$('#authenticateCont form')
.asEventStream('submit')
.combine(currentConfig, function(r, c) {
return {
response: r,
config: c
};
})
.onValue(function(e){
...
});
这样做除了以下事实:当配置更改时,会导致按钮单击触发的处理程序,就像表单已提交一样。显然我不想要这个。
需要提交表单时,它会从配置中读取最新值。我需要类似'combineLeft'操作的东西,它不存储最近的提交事件。
来吧......这么简单的事情怎么会这么棘手?按一个按钮,读取一个值!
答案 0 :(得分:1)
我需要类似于' combineLeft'操作
是的,有类似的东西:property.sampledBy(stream)
。只要单击“提交”按钮,它就会从config属性中获取当前值:
var submit = $('#authenticateCont form').asEventStream('submit');
currentConfig.sampledBy(submit, function(c, e) {
return {event: e, config: c};
})
.onValue(function(e) { … });