为什么 CKEditor5 使用 promise 来初始化它?

Why does CKEditor5 use a promise to initialize it?

示例:

ClassicEditor
.create( document.querySelector( '#editor' ) )
.then( editor => {
    console.log( editor );
} )
.catch( error => {
    console.error( error );
} );

为什么需要异步创建编辑器?

编辑器初始化可以是异步的,因为某些编辑器功能或编辑器 UI 可能需要异步初始化。

我是故意不具体的。作为一个框架开发者,我不知道框架的使用者会想要实现什么样的特性。但是,我知道一些过去的例子:

  • 基于 <iframe> 的编辑器(iframe 异步初始化),即在 <iframe>
  • 中编辑内容的编辑器
  • 需要从服务器检索内容的实时协作功能。

如果你正在实现一个需要延迟初始化的插件,那么你可以简单地从它的 init() or afterInit() 方法中 return 一个承诺:

class MyPlugin extends Plugin {
    init() {
        return new Promise( resolve => {
            // Call resolve() once your plugin is ready:
            resolve();
        } );
    }
}