我正在编写一个 ES6 类,它将保存一个游戏实例。它有大约 20 个方法,其中一半是调用异步函数。它还具有立即计算返回值的方法。这意味着有时我需要返回一个 Promise
,有时则不需要。
现在我正在考虑更改其余方法以返回 Promise
。
Advantage: A more uniform style of dealing with callbacks/return values
Disadvantage: Need to handle
Promise
s 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/