捕获所有关键输入,直到以响应式编程方式按下 ENTER
Capture all key inputs until ENTER is hit in a reactive programming way
在Javascript中使用Kefir,我想捕获所有关键输入,直到命中ENTER
。到目前为止,我已经设法使用诸如 bufferWhile
var inputValues = Kefir
.fromEvents(document.querySelector('body'), 'keydown')
.bufferWhile(event => event.keyCode!=13);
var result = inputValues.toProperty(() => "");
result
.onValue(x => elm.innerHTML = x.slice(0,-1).map(y => String.fromCharCode(y.keyCode)).join(''))
.onError(() => elm.innerHTML = "?");
但最初我想使用常规scan
如
var inputValues = Kefir
.fromEvents(document.querySelector('body'), 'keydown')
.scan((acc, y) => acc.concat(y), "");
但是我该怎么做:
- 命中
ENTER
时输出累加器? - 重新启动累加器以启动新的击键序列?
本质上,如何使用scan
和单个流来撰写bufferWhile
?答案不一定是关于开菲尔的,任何FRP伪代码都可以。
我不确定这是你想要的。一般来说,想法是将确认和实现的流分开。并以某种方式组合它:
const input$ = ...;
const key$ = input$.filter(isNotEnter).map(toChar);
const enter$ = input$.filter(isEnter);
const confirm$ = Kefir.merge([
enter$,
key$.debounce(1000)
]);
key$.bufferBy(confirm$);
相关文章:
- jquery动画可以通过编程链接吗
- 如何将getJson的响应保存在全局变量中
- 一点javascript元编程&可链接的设置器
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 捕获所有关键输入,直到以响应式编程方式按下 ENTER
- 是否可以构造一个链接,导航到它并以编程方式用C#打印响应?怎样
- 响应式编程——RxJS与Node.js中的EventEmitter
- 以编程方式添加处理程序来响应表单处理程序
- 美化JSON响应使用ajax jQuery编程
- 使用响应式编程RXJS与AWS SDK的javascript
- 函数式响应式编程相对于事件侦听器的优势
- 为什么函数式响应式编程都是关于事件流的
- 用响应式编程重写事件发射器(信号量示例)