Ist es eine schlechte Praxis, wenn eine Konstruktorfunktion ein Versprechen zurückgibt?

Ich versuche, einen Konstruktor für eine Blogging-Plattform zu erstellen, in der viele asynchrone Vorgänge ausgeführt werden. Diese reichen vom Abrufen der Posts aus Verzeichnissen, Parsen, Senden über Template-Engines usw.

Meine Frage ist also, ob es unklug wäre, wenn meine Konstruktorfunktion ein Versprechen anstelle eines Objekts der von ihnen aufgerufenen Funktion zurückgibtnew 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 kann der Benutzer auchnicht liefern eine Ergänzung Versprechen Kettenglied:

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

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

Dies kann ein Problem darstellen, da der Benutzer möglicherweise verwirrt ist, warum engine ist nach dem Bau nicht verfügbar.

Der Grund, ein Promise im Konstruktor zu verwenden, ist sinnvoll. Ich möchte, dass der gesamte Blog nach der Bauphase funktioniert. Es scheint jedoch fast ein Geruch zu sein, unmittelbar nach dem Aufruf keinen Zugriff auf das Objekt zu habennew.

Ich habe mit etwas im Sinne von diskutiertengine.start().then() oderengine.init() das würde das Versprechen stattdessen zurückgeben. Aber die scheinen auch zu stinken.

Bearbeiten: Dies ist in einem Node.js-Projekt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage