1

我正在尝试提高 monico 编辑器完成项提供程序的性能(它目前正在进行 ajax 调用以获取适当的项......自定义语言非常庞大且复杂)。

我想知道是否/如何返回一个 Thenable CompletionList 可能对此有所帮助。 https://microsoft.github.io/monaco-editor/api/interfaces/monaco.languages.completionitemprovider.html

我们最初是从一个同步的 ajax 调用开始的,这样我们就可以确定要呈现结果,但这会导致输入流中过多的阻塞/中断。现在 ajax 调用是异步的,但返回的速度不够快,我们收到一条“无建议”消息。

4

1 回答 1

2

我想到了。以防其他人想知道如何做同样的事情。从 provideCompletionItems 函数...

return new Promise(function(resolve, reject) {
  $.ajax({
    url: 'someaddress.com',
    dataType: 'json',
    success: function(res) {
      // create your keywords json here
      resolve({items: keywords, isIncomplete: true});
    },
    error: function(xhr, error){
      reject({items: [], isIncomplete: true})
    },
  });
});

然后,当 ajax 调用发生时,monaco 编辑器将显示一组漂亮的动画点作为加载指示器。

于 2017-07-18T17:23:38.880 回答