1
我有以下情况:如何在Elm lang 0.17中实现去抖自动保存?
当用户停止在文本区域输入时,我想等待2秒钟,如果用户在2秒内没有更改textarea中的任何内容,我想要保存textarea的内容到服务器。如果用户在2秒内改变了textarea中的内容,我想重新启动等待超时。
在JavaScript中,我会实现它这样
http://codepen.io/ondrejsevcik/pen/LRxWQP
// Html
<textarea id="textarea"></textarea>
<pre id="server"></pre>
// JavaScript
var textarea = document.querySelector('#textarea');
var textValue = "";
textarea.oninput = function (e) {
textValue = e.target.value;
setSaveTimeout();
}
let saveTimeout;
function setSaveTimeout() {
if (saveTimeout) {
clearTimeout(saveTimeout);
}
saveTimeout = setTimeout(saveToServer, 2000);
}
function saveToServer() {
document.querySelector('#server').innerText =
'Value saved to server: ' + textValue;
}
['Process.sleep'](http://package.elm-lang.org/packages/elm-lang/core/4.0.5/Process#sleep)是榆树的'setTimeout'等效,显然。我能够找到[这个例子](https://github.com/fredcy/example-elm-debounce/blob/master/Debounce.elm)使用它来消除,但不管它是否是最好的方式,我我不确定。 –
此外,以下是讨论如何反弹的用户组的一个主题:https://groups.google.com/forum/#!topic/elm-discuss/w4MwjIaTiIY –