【发布时间】:2016-09-07 20:33:40
【问题描述】:
这可能是基于一点意见,但一个重要的问题。
你应该只对异步操作使用 Promise 吗?如果你有一个 api,那么很可能那里的全部函数都应该使用 Promise。因此,如果我制作一些业务逻辑功能,它们也应该返回一个承诺。我想知道这是不是很好,你让一切都回报了一个承诺。我的意思是,我在 while 循环中调用函数,其中每个函数都返回一个 Promise(函数是链式的)。在函数中使用 Promise 会更慢吗?在堆栈中结合承诺和常规返回值是个好主意吗?我真的需要学习这个,所以请不要关闭
【问题讨论】:
-
如果你的函数是异步的,它需要返回一个promise。如果它不做任何异步操作,它就没有充分的理由返回一个 Promise,你应该避免它。
-
是的,但是您在另一个问题中回复评论说:“是的。“有时同步”是一个非常糟糕的主意,所以我们总是返回一个承诺。”当我说:“好的,所以可以从同步操作中返回一个 Promise。”看:stackoverflow.com/questions/38866725/…
-
更多的是“当它发生在你不确定操作是否同步的上下文中时,可以从同步操作中返回一个承诺”
-
有时同步和总是同步是有区别的。例如“我是否已经发出了这个极其缓慢的网络请求并缓存了结果?”否-> 提出请求并返回一个承诺。是->返回缓存的响应。现在你从同一个函数返回两个不同的东西。这是你总是会从“有时是同步的”函数返回一个承诺的地方,所以调用代码不需要关心它是否异步发生。
-
简单问题:你会让
String.substr异步吗?不,希望不会,因为这毫无意义。因此,您将总是拥有同步和异步代码的混合体,对于任何特定函数使用哪个代码取决于该函数应该做什么。
标签: javascript node.js promise es6-promise