Javascript 何时使用return或callback?
nodejs中的一些模块方法使用回调(异步),一些使用返回(同步)。Javascript 何时使用return或callback?,javascript,node.js,callback,return,Javascript,Node.js,Callback,Return,nodejs中的一些模块方法使用回调(异步),一些使用返回(同步)。 什么时候最好使用这两种方法?你应该考虑什么?性能影响是什么?通常,作为node.js开发人员,您没有选择余地。如果您的函数只使用同步库函数,那么它可以是同步的并返回一个值。如果您的函数使用来自节点核心或支持库的任何异步API,那么您的函数也必须是异步的并使用回调。一般规则是任何IO(磁盘、网络、进程)都需要回调。该规则的例外情况是,当您编写实用程序脚本(如构建脚本或单用户命令行程序(与网络服务相反))时,在这种情况下,您可以使
什么时候最好使用这两种方法?你应该考虑什么?性能影响是什么?通常,作为node.js开发人员,您没有选择余地。如果您的函数只使用同步库函数,那么它可以是同步的并返回一个值。如果您的函数使用来自节点核心或支持库的任何异步API,那么您的函数也必须是异步的并使用回调。一般规则是任何IO(磁盘、网络、进程)都需要回调。该规则的例外情况是,当您编写实用程序脚本(如构建脚本或单用户命令行程序(与网络服务相反))时,在这种情况下,您可以使用node core中的同步API 由于性能原因是否使用了异步 在node.js本身中,选择非同步IO、单线程和单事件循环有两个主要原因:性能(主要是处理多个连接时的效率)和编程风格(主要是因为编写正确的多线程代码比编写正确的基于事件的异步代码更难)
但在日常编码中,node.js主要用于编写网络服务器,在网络服务器中使用任何同步IO都会严重降低性能(node.js网络服务器中的同步IO违反了node.js工作的主要原则),因此,我认为所有IO都是异步的,只有在非常小的特定情况白名单下才能执行同步IO,例如当您的程序开始启动和加载时(
require('foo')
是同步的),或者您正在编写不提供网络服务的命令行程序(构建脚本、实用程序等).不是完全相同的问题,但您的问题的答案也隐藏在问题后面。Javascript的行为与所有其他编程语言一样,并按顺序执行,除非它等待其他服务给它一个响应。它不等待其他服务的响应并阻止下一条指令,而是执行以下指令选项。此设计称为asynchromous
。当您使用任何异步调用时,请使用callback
。否则,您可以使用return
。这是一些同步和异步行为的场景。在执行i/o操作时使用回调。