为什么 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();
} );
}
}
示例:
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();
} );
}
}