javascript - NodeJS - 使用 Promises 进行 API 调用

标签 javascript node.js asynchronous promise es6-promise

我有一个 nodeJS 库,我在其中编写特定功能,它将调用 SOAP API 来获取信息。

我希望人们可以轻松地使用图书馆。这样他们就可以调用:

library.requestThatService(parameters ...);

图书馆应该处理幕后的所有脏活。我希望图书馆做的是首先可能验证给定的参数。然后根据参数构造要发送的消息(序列化?),创建签名等...最后,使用包含之前创建和签名的消息的 soap 客户端调用 soap API。

现在我正在考虑为此使用 javascript Promises。我不确定我是否应该包装整个 library.requestThatService(parameters ...) 函数以返回一个 promise ,然后使用失败和成功函数(.then 在实践中)。 我真正想问的是,我是应该只对实际的异步 API 调用使用异步,还是对整个库函数使用异步?我可以向它添加一个回调函数,而不是让库调用返回一个 promise 。然后在库函数中,我应该只对发送 SOAP 请求的部分使用异步 promise 。并且不包括异步部分的验证和消息创建,因为它们不是异步操作。

SOAP 客户端可能已经自行返回一个 promise 。所以我会有两个 promise 围绕一个函数 float ,我不确定这是否真的是个好主意。那么其中一个 promise 将不会被解决或拒绝。

最佳答案

Should I only use async for the actual async API call, or for the whole library function?

是的 - 始终在最低级别 promise !您会想要自己使用 promise 的力量,不是吗?

The SOAP client might return a promise by itself already. So then I would have two promises floating around a function, and I'm not sure if that is a good idea at all really.

确实,将返回 promise 的调用包装在另一个 new Promise 调用中是一个 exceptionally bad idea甚至。

关于javascript - NodeJS - 使用 Promises 进行 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38866725/

相关文章:

swift - 具有并发和串行的异步任务

python - 在 Python 中使用异步

c# - 当我不能使用 ConfigureAwait(false) 时?

Javascript 图像 src 属性返回错误值

javascript - Angular js ng-repeat 和过滤器

javascript - 动态 AngularJS 表单

javascript - 缓冲代码和非缓冲代码有什么区别?

jquery - 需要在node中使用jquery

javascript - 尝试将事件处理程序放入单独文件时出现 Discord.js "cannot read properties of undefined"

node.js - 为什么 Puppeteer 在页面上找不到这个链接元素?