何时使用return或callback

When to use either return or callback?

本文关键字:callback return 何时使      更新时间:2023-09-26

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

一般来说,作为node.js开发人员,您别无选择。如果函数只使用同步库函数,则它可以是同步的并返回值。如果您的函数使用任何来自节点核心或支持库的异步API,那么您的函数也必须是异步的并使用回调。一般规则是任何IO(磁盘、网络、进程)都需要回调。该规则的例外情况是,当您正在编写诸如构建脚本或单用户命令行程序(与网络服务相反)之类的实用程序脚本时,在这种情况下,您可以使用节点核心的同步API。

是否由于性能原因而使用异步?

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

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

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