ACE编辑器applyDeltas似乎与setTimeout不兼容

时间:2013-12-04 21:37:17

标签: javascript settimeout ace-editor

我正在尝试在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。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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