【发布时间】:2014-10-20 06:33:11
【问题描述】:
nodejs中模块的一些方法使用回调(异步),一些使用return(同步)。 什么时候是最好的使用时间?你应该考虑哪些事情?以及对性能有何影响?
【问题讨论】:
-
在执行 i/o 操作时使用回调。
标签: javascript node.js callback return
nodejs中模块的一些方法使用回调(异步),一些使用return(同步)。 什么时候是最好的使用时间?你应该考虑哪些事情?以及对性能有何影响?
【问题讨论】:
标签: javascript node.js callback return
通常,作为 node.js 开发人员,您没有选择余地。如果你的函数只使用同步库函数,它可以是同步的并返回一个值。如果您的函数使用来自节点核心或支持库的任何异步 API,则您的函数也必须是异步的并使用回调。一般规则是任何 IO(磁盘、网络、进程)都需要回调。该规则的例外情况是当您编写实用程序脚本时,例如构建脚本或单用户命令行程序(而不是网络服务),在这种情况下,您可以使用来自节点核心的同步 API。
是否因为性能原因使用了异步?
在 node.js 本身中,选择异步 IO、单线程和单个事件循环有两个主要原因:性能(主要是处理多个连接时的效率)和编程风格(主要是编写正确的多线程代码比编写正确的基于事件的异步代码更困难)。
但是在您的日常编码中,node.js 主要用于编写网络服务器,并且在使用任何同步 IO 的网络服务器中都会严重降低性能(node.js 网络服务器中的同步 IO 违反了使node.js 工作),所以我认为它的方式是所有 IO 都是异步的,只有在非常小的特定情况白名单下进行同步 IO 才可以,例如当您的程序最初启动和加载时(require('foo') 是同步)或者您正在编写一个不提供网络服务(构建脚本、实用程序等)的命令行程序。
【讨论】: