何时使用返回或回调?

时间:2014-10-20 06:33:12

标签: javascript node.js callback return

nodejs中的某些模块方法使用回调(异步),有些使用return(同步)。 什么时候是最佳使用时间?你应该考虑哪些事情?什么是性能影响?

2 个答案:

答案 0 :(得分:1)

通常,您不能选择node.js开发人员。如果您的函数仅使用同步库函数,则它可以是同步的并返回一个值。如果您的函数使用来自节点核心或支持库的任何异步API,则您的函数也必须是异步的并使用回调。一般规则是任何IO(磁盘,网络,进程)都需要回调。规则的例外是当您编写实用程序脚本(例如构建脚本或单用户命令行程序)(而不是网络服务)时,在这种情况下,您可以使用节点核心中的同步API。

  由于性能,

是异步使用的吗?

在node.js本身,选择异步IO,单线程和单个事件循环是出于两个主要原因:性能(主要围绕处理多个连接时的效率)和编程风格(主要是写作的想法)正确的多线程代码比编写正确的基于事件的异步代码更难。

但是在你的日常编码中,node.js主要用于编写网络服务器,在网络服务器中使用任何同步IO会严重降低性能(node.js网络服务器中的同步IO违反了主要原则node.js工作),所以我认为它的方式是所有IO都是异步的,只有在特定环境的非常小的白名单下才能进行同步IO,例如在程序最初启动和加载时({{1}你正在编写一个不提供网络服务的命令行程序(构建脚本,实用程序等)。

答案 1 :(得分:0)

不完全相同的问题,但问题的答案也隐藏在this问题背后。 Javascript就像所有其他编程语言一样,并按顺序执行,除非它等待其他服务给它一个响应。它不是等待其他服务的响应并阻止下一条指令,而是执行以下指令。此设计称为asynchromous。当您使用任何异步调用时,请使用callback。否则,您可以使用returnHere是同步和异步行为的一些场景。