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 –