【发布时间】:2014-09-27 19:51:52
【问题描述】:
您能否向初学者解释一下“promise”、“async”和“callbacks”之间的区别。这些术语如何相互关联?这些是一样的吗?不同的东西?我什么时候用哪个?
【问题讨论】:
-
你应该使用哪一个是基于意见的。其他问题已经单独提出:stackoverflow.com/questions/824234/what-is-a-callback-function - stackoverflow.com/questions/6801283/…。至于异步库与 Promises 相比,Promises 更强大且可组合,但这又是 我的 意见。
-
在我的意见中,你应该先学习 JavaScript 并发模型(也就是说,除了 API 给你的“主机函数”之外,所有东西都是同步的) . cps works in JavaScript 以及更普遍的函数如何接受函数参数,最后才是——promise 是如何工作的(它们不是魔法 :))。只有当你了解了这些东西时,我才会使用 Promise,在我的 opinion 中,它们是回调的更好替代方案,因为它们可以更好地处理错误并更好地组合。
-
这是一个有效的问题,并非基于意见。这些术语是高度相关的,对不同的术语进行澄清是适当的。请重新打开。
-
@MichaelAaronSafyan 在编辑之前是基于意见的,在编辑之后它与stackoverflow.com/questions/4296505/… 非常接近。
-
根据我的经验,大多数事情都可以通过使用 Promise 来实现,而且它可以清楚地理解流程。使用 Promise 的缺点是,使用 Promise 的项目倾向于在任何地方使用它们,这有时会导致需要包装不使用它们的模块。异步可以很容易地与大量使用 CB 相结合,因此在长流程的情况下,它可以提供更好的结构。但是正如@Benjamin Gruenbaum 提到的,在继续之前,您应该先了解 JS 并发模型。
标签: node.js asynchronous callback promise