Я пытаюсь создать конструктор для платформы ведения блогов, и в нем много асинхронных операций. Они варьируются от захвата сообщений из каталогов, их разбора, отправки их через движки шаблонов и т.д.
Итак, мой вопрос: было бы неразумно, чтобы моя функция-конструктор возвращала обещание вместо объекта функции, которую они называли new
.
Например:
var engine = new Engine({path: '/path/to/posts'}).then(function (eng) {
// allow user to interact with the newly created engine object inside 'then'
engine.showPostsOnOnePage();
});
Теперь пользователь может также не поставлять ссылку с цепочкой Promise:
var engine = new Engine({path: '/path/to/posts'});
// ERROR
// engine will not be available as an Engine object here
Это может создать проблему, так как пользователь может быть смущен, почему engine
недоступен после построения.
Причина использования Promise в конструкторе имеет смысл. Я хочу, чтобы весь блог функционировал после этапа строительства. Однако, кажется, что запах почти не имеет доступа к объекту сразу же после вызова new
.
Я обсуждал, используя что-то в строках engine.start().then()
или engine.init()
, которое вместо этого вернет Promise. Но они также кажутся вонючей.
Изменить: это в проекте Node.js.