【发布时间】:2014-04-23 19:13:41
【问题描述】:
我正在使用 bluebird 围绕 http 服务设计一些 nodejs api 包装器。 这个包装器中的许多函数都是异步的,因此从这些实现中返回 Promise 很有意义。
我的同事已经在这个项目上工作了几天,有趣的模式正在出现,他还从同步实现的函数中返回承诺。
例子:
function parseArray(someArray){
var result;
// synchronous implementation
return Promise.resolve(result);
}
如果以后需要使实现异步,我可以看到这将如何有用,因为您不必重构调用站点。 我想所有方法都始终“异步”也很好,但我不确定这到底有多棒。
这是否被认为是一种不好的做法,我们有什么理由不应该这样做吗?
【问题讨论】:
-
这看起来毫无用处的沉重。如有疑问,您始终可以
cast函数返回,我看不出有任何理由不提供直接可用的值。 -
顺便说一句,这不是一个主要基于意见的问题吗?
-
这实际上是一个很常见的反模式,我认为有这个问题很有用,因为它是一个反模式。
-
promise 的目的是让你的代码更简单、更清晰。如果使用 Promise 会让你在很多函数中添加一些无用的重复代码,那你就错了。
-
这样做会欺骗 API 的用户,让他们相信它是异步实现的
标签: javascript asynchronous promise api-design