NodeJS - 使用 Promises 进行 API 次调用
NodeJS - using Promises for API calls
我有一个 nodeJS 库,我在其中编写特定功能,它将调用 SOAP API 来获取信息。
我希望人们可以轻松地使用图书馆。这样他们就可以调用:
library.requestThatService(parameters ...);
图书馆应该处理幕后的所有肮脏工作。我希望图书馆做的是首先可能验证给定的参数。然后根据参数(序列化?)构造要发送的消息,创建签名等...最后,使用包含之前创建和签名的消息的 soap 客户端调用 soap API。
现在我正在考虑为此使用 javascript Promises。我不确定我是否应该将整个 library.requestThatService(parameters ...) 函数包装到 return 一个承诺中,然后使用失败和成功函数(.then 在实践中)。 我真正想问的是,我是应该只对实际的异步 API 调用使用异步,还是对整个库函数使用异步?我可以向它添加一个回调函数,而不是让库调用 return 成为一个承诺。然后在库函数中,我应该只对发送 SOAP 请求的部分使用异步承诺。并且不包括异步部分的验证和消息创建,因为它们不是异步操作。
SOAP 客户端可能 return 本身已经是一个承诺。所以我会有两个 promise 围绕一个函数浮动,我不确定这是否真的是个好主意。那么这些承诺之一将不会被解决或拒绝。
Should I only use async for the actual async API call, or for the whole library function?
是的 - 始终在最低级别承诺!你会想要自己使用承诺的力量,不是吗?
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.
的确,将返回承诺的调用包装在另一个 new Promise
调用中是一个 exceptionally bad idea 偶数。
我有一个 nodeJS 库,我在其中编写特定功能,它将调用 SOAP API 来获取信息。
我希望人们可以轻松地使用图书馆。这样他们就可以调用:
library.requestThatService(parameters ...);
图书馆应该处理幕后的所有肮脏工作。我希望图书馆做的是首先可能验证给定的参数。然后根据参数(序列化?)构造要发送的消息,创建签名等...最后,使用包含之前创建和签名的消息的 soap 客户端调用 soap API。
现在我正在考虑为此使用 javascript Promises。我不确定我是否应该将整个 library.requestThatService(parameters ...) 函数包装到 return 一个承诺中,然后使用失败和成功函数(.then 在实践中)。 我真正想问的是,我是应该只对实际的异步 API 调用使用异步,还是对整个库函数使用异步?我可以向它添加一个回调函数,而不是让库调用 return 成为一个承诺。然后在库函数中,我应该只对发送 SOAP 请求的部分使用异步承诺。并且不包括异步部分的验证和消息创建,因为它们不是异步操作。
SOAP 客户端可能 return 本身已经是一个承诺。所以我会有两个 promise 围绕一个函数浮动,我不确定这是否真的是个好主意。那么这些承诺之一将不会被解决或拒绝。
Should I only use async for the actual async API call, or for the whole library function?
是的 - 始终在最低级别承诺!你会想要自己使用承诺的力量,不是吗?
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.
的确,将返回承诺的调用包装在另一个 new Promise
调用中是一个 exceptionally bad idea 偶数。