最佳答案
我正在尝试为一个 blog 平台创建一个构造函数,它内部有许多异步操作。这些范围包括从目录中获取文章、解析它们、通过模板引擎发送它们等等。
所以我的问题是,让我的构造函数返回一个承诺而不是他们调用 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();
});
现在,用户还可以提供 没有补充承诺链接:
var engine = new Engine({path: '/path/to/posts'});
// ERROR
// engine will not be available as an Engine object here
这可能会造成一个问题,因为用户可能会感到困惑,为什么 engine
< em > 在构建之后不可用。
在构造函数中使用瓶颈的原因是有意义的。我希望整个博客在建设阶段之后都能正常运作。然而,这似乎是一种气味,几乎没有访问的对象后,立即调用 new
。
我已经讨论过沿着 engine.start().then()
或者 engine.init()
的路线使用一些东西来代替返回无极。但是那些看起来也很臭。
编辑: 这是在 Node.js 项目中。