У меня сценарий:Как реализовать debounced autosave в Elm lang 0.17?
Когда пользователь перестает печатать в текстовой области, я хочу подождать 2 секунды, и если пользователь не изменит ничего в текстовом поле за эти 2 секунды, я хочу сохранить содержимое текстового поля на сервере. Если пользователь меняет что-то в текстовом поле за эти 2 секунды, я хочу перезапустить тайм-аут ожидания.
В 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 –