应该Node.js库支持promises和callbacks [关闭]

问题描述 投票:0回答:2

我正在开发一个向用户公开异步API的Node.js库项目。我没有在javascript中工作很长时间,但似乎几年前,回调用于处理异步结果/错误。然后在ES6中引入了promises,在ES8中引入了async-await(这是使用promises的更方便的方式)。

我的问题是API的典型用户目前期望什么?我注意到几个项目中的一个成语,其中支持promises和回调,函数将回调作为最后一个参数,如果没有提供,则返回Promise。

我想知道在当前项目中是否应该遵循这个习惯用法,还是应该一起删除回调?有人还会使用回调吗?

我注意到async-await正在成为主导风格,但Node.js API本身仍然是基于回调的(实际上API通常返回一个事件发射器,而不是一个promise,因此用户可以在返回值上注册事件)。

所以我只是想从Node.js社区寻找关于采取哪个方向的一般性意见。

谢谢。

编辑:

谢谢你的答案。如果有更多建议,我被要求澄清有关该项目的一些事项:

(1)API旨在用于访问特定产品

(2)所有呼叫都涉及网络通信,基本上是请求/响应。

我们绝对打算支持承诺(这样每个请求都会为用户提供可以实现或拒绝的承诺),唯一的问题是是否仍应支持回调。

也许我可以将这些问题重新表述为不那么基于意见:

1)对于最近发布的Node.js库(在语言支持async-await之后)并且具有与上述类似的要求,主要风格是什么?你能指点我的例子吗?

2)是否有任何情况下应用程序更愿意通过回调而不是承诺来处理异步结果/错误?

谢谢。

javascript node.js async-await es6-promise asynccallback
2个回答
0
投票

您的预期用户群有多大?

如果它很小 - 即包含在一个易于定义的组和现代技术堆栈中,则扮演独裁者并选择一种风格。

如果它很大并且必须在许多可能的传统平台上运行,请考虑提供回调或提供多种口味。


0
投票

一系列可能性

如果您的库需要与客户端程序具有同步关系,那么您可能希望使用回调(依赖于I / O的程序)。否则,如果您的API具有长且不一致的响应时间,那么您肯定希望能够处理承诺,因此您不会在每个请求上等待瓶颈缩颈应用程序(路由webtraffic等)。

结论

在我个人看来,使Node.js变得更好的是Promises的异步性质,它允许你编写灵活的程序。在一天结束时,人们将使用您的图书馆用于各种目的,您可以为用户提供更多选择。祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.