Ist es eine schlechte Übung, eine Konstruktorfunktion eine Versprechung zurückgeben zu lassen?

Ich versuche, erstellen Sie einen Konstruktor für eine blogging-Plattform, und es hat viele asynchrone Operationen vorgeht. Diese reichen von der Ergreifung der Beiträge von Verzeichnissen, analysieren Sie und schickt Sie durch template-engines, etc.

Also meine Frage ist, wäre es unklug zu haben, mein Konstruktor-Funktion zurückzukehren ein Versprechen, anstatt ein Objekt von der Funktion, die Sie aufgerufen new gegen.

Zum Beispiel:

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();
});

Nun, der Benutzer kann auch nicht Versorgung eine Ergänzung Versprechen chain-link:

var engine = new Engine({path: '/path/to/posts'});

//ERROR
//engine will not be available as an Engine object here

Dies könnte ein problem darstellen, da der Benutzer möglicherweise verwechselt werden, warum engine ist nicht verfügbar, nach Konstruktion.

Den Grund für die Verwendung eines Versprechen im Konstruktor Sinn macht. Ich will das gesamte blog zu funktionieren nach der Bauphase. Jedoch, wie es scheint, ein Geruch fast nicht haben Zugriff auf das Objekt sofort nach dem Aufruf new.

Habe ich mir überlegt, mit etwas entlang der Linien von engine.start().then() oder engine.init() was wieder das Versprechen statt. Aber diese scheinen auch stinkig.

Edit: ist in einem Node.js Projekt.

InformationsquelleAutor der Frage adam-beck | 2014-06-25

Schreibe einen Kommentar