Я пытаюсь воспроизвести пользовательский ввод в редакторе ACE. Собрав очередь дельт, пытаюсь зациклиться на очереди и показать изменения с задержками.
Вот немного упрощенный код:
// 'queue' is queue of delta objects
var i = 0;
function playbackLoop() {
// setTimeout( function() {
editor.getSession().getDocument().applyDeltas([queue[i]]);
i++;
if(i < queue.length)
playbackLoop();
// }, 250);
}
Этот код работает — например, он оставляет мне точную копию того, что ввел пользователь.
Когда я раскомментирую строки для setTimeout, при воспроизведении курсор в редакторе перемещается каждые 250 мс, но символы не появляются. Итак, я пришел к выводу, что setTimeout мешает applyDeltas.
Я предполагаю, что applyDeltas полагается на какие-то скрытые внутренности, но я понятия не имею, что они могут быть.
Спасибо!