javascript - 我的 ES6 类方法是否应该返回一个 Promise,即使没有必要?

标签 javascript class language-agnostic promise es6-promise

我正在编写一个 ES6 类,它将保存一个游戏实例。它有大约 20 个方法,其中一半是调用异步函数。它还具有立即计算返回值的方法。这意味着有时我需要返回一个 Promise,有时则不需要。

现在我正在考虑更改其余方法以返回 Promise

Advantage: A more uniform style of dealing with callbacks/return values

Disadvantage: Need to handle Promises when not always necessary. Means a little overhead.

对我来说,这两种变体似乎都不错。我应该使用哪一个,尊重潜在开发同事的可读性和易用性?

最佳答案

如果您的操作始终是异步的或有时是异步的,您将返回一个 promise 。

但是,如果您的方法始终是同步的,那么返回 Promise 只会使调用者对该方法的使用变得复杂,并使使用您的 API 变得更加困难。它还会减慢速度,因为 promise 总是在未来的时刻得到解决。而且,将同步操作转变为异步操作可能会产生不需要存在的竞争条件(一切都取决于调用者代码)。

此外,调用者通常应该了解哪些方法是异步的,哪些不是——我不认为向调用者隐藏这一点有什么好处。

因此,在我看来,同步 API 更易于使用,因此如果 API 本质上是同步的,那么您就不会希望使其成为不必要的异步。并且,请记住,同步函数始终可以在 Promise 链中间使用而无需修改。但是,它可以在没有 promise 链的情况下自行使用,这是开发人员可用性优势。

API 的命名和文档应该非常清楚哪些操作是异步的,会返回 Promise,哪些操作不会返回值。

关于javascript - 我的 ES6 类方法是否应该返回一个 Promise,即使没有必要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39987827/

相关文章:

asp.net - 注册启动脚本控制

javascript - React 状态更新时动态更改获取请求 url

objective-c 类变量 : when is dealloc called?

algorithm - 多米诺骨牌匹配算法

algorithm - 没有原子 CAS 的快速线程排序算法

javascript - 在 JavaScript 中使用 php json 结果

javascript - 缩小 JavaScript 是保护源代码的唯一方法吗?

C++ 访问静态 constexpr 数组

JAVA Swing - 将 JLabel 设置为另一个类中的字符串

language-agnostic - 宏是什么意思?