【发布时间】:2017-01-17 09:33:46
【问题描述】:
我有一个 main 函数,用于执行特定查询并解析响应。该函数的第一步是验证赋予该函数的参数。然后我将生成查询,签名然后发送。最后,我将处理响应。
为了发送查询,我想使用承诺模式。我想要的是主函数会返回一个承诺。问题是,大多数函数都是同步的而不是异步的,所以我不应该使用 Promise。我想要的是这样的:
return this.validateQueryAttributes(attributes)
.then(generateQuery)
.then(signQuery)
.then(sendQuery)
.then(handleResponse);
问题是,第一个函数没有返回承诺。所以我不能用 then 将它与其他函数链接起来,因为 then 模式期望得到一个承诺。另外,我有一个上一级的 .catch 函数,我想用它来捕获我正在调用的任何函数中可能发生的错误情况。如果我不将第一个函数与其余函数链接,那么第一个函数中发生的错误将不会被捕获?
【问题讨论】:
-
是的,但如果函数本身是同步的,则永远不应该返回承诺。你应该只对异步函数使用 Promise。
-
在这种情况下这是最佳做法吗?如果您认为是,请将其发布为答案。以及如何制作异步包装器:)
标签: node.js asynchronous promise es6-promise