我正在尝试在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的行时,在回放时,编辑器中的光标每250ms移动一次,但没有字符出现。因此,我得出的结论是setTimeout干扰了applyDeltas。

我猜applyDeltas依赖于一些隐藏的内部,但是我不知道它们可以是什么。

谢谢!

最佳答案

队列中的增量可能有问题吗?
http://jsbin.com/ojijeb/320/edit在这里工作正常。只需编辑并按重播

10-06 15:20