Почему CKEditor5 использует обещание для его инициализации? - PullRequest
0 голосов
/ 10 мая 2018

Пример:

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

Почему создание редактора должно быть асинхронным?

1 Ответ

0 голосов
/ 14 мая 2018

Инициализация редактора может быть асинхронной, потому что некоторые функции редактора или пользовательский интерфейс редактора могут требовать асинхронной инициализации.

Я не определен здесь нарочно.Как разработчик фреймворка, я не знаю, какие функции захотят реализовать пользователи фреймворка.Однако я знаю несколько примеров из прошлого:

  • * редактор на основе <iframe> (iframes инициализируются асинхронно), то есть редактор, в котором содержимое редактируется в пределах <iframe>,
  • функции совместной работы в режиме реального времени, которые должны извлекать контент с сервера.

Если вы реализуете плагин, который должен отложить инициализацию, то вы можете просто вернуть обещание из егоinit() или afterInit() методы:

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