javascript - 何时使用返回或回调?

标签 javascript node.js callback return

nodejs中模块的一些方法使用callback(异步),一些使用return(同步)。 什么时候使用这两者的最佳时间?您应该考虑哪些事项?以及性能影响是什么?

最佳答案

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

was asynchronous used due to performance?

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

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

关于javascript - 何时使用返回或回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26459690/

相关文章:

javascript - 如何在鼠标悬停时在 d3.js 中创建工具提示?

javascript - 使用 javascript 中的循环将 "-' 替换为 "_"

php - PHP 回调可以通过引用接受它的参数吗?

C:如何实现动态函数复制?

JavaScript - 仅解析 URL 的一部分,但不解析指定位置之后的所有内容

javascript - prototype.constructor的实际目的是什么?

javascript - 如何在nodejs中获取正确的时间戳值?

node.js - 手动连接 sails.io.js

node.js - TypeScript - module.exports 抛出错误 TS2591 : Cannot find name 'module'

javascript - 在 .hide() 完成动画之前不要运行函数