nodejs中的某些模块方法使用回调(异步),有些使用return(同步)。 什么时候是最佳使用时间?你应该考虑哪些事情?什么是性能影响?
答案 0 :(得分:1)
通常,您不能选择node.js开发人员。如果您的函数仅使用同步库函数,则它可以是同步的并返回一个值。如果您的函数使用来自节点核心或支持库的任何异步API,则您的函数也必须是异步的并使用回调。一般规则是任何IO(磁盘,网络,进程)都需要回调。规则的例外是当您编写实用程序脚本(例如构建脚本或单用户命令行程序)(而不是网络服务)时,在这种情况下,您可以使用节点核心中的同步API。
由于性能,是异步使用的吗?
在node.js本身,选择异步IO,单线程和单个事件循环是出于两个主要原因:性能(主要围绕处理多个连接时的效率)和编程风格(主要是写作的想法)正确的多线程代码比编写正确的基于事件的异步代码更难。
但是在你的日常编码中,node.js主要用于编写网络服务器,在网络服务器中使用任何同步IO会严重降低性能(node.js网络服务器中的同步IO违反了主要原则node.js工作),所以我认为它的方式是所有IO都是异步的,只有在特定环境的非常小的白名单下才能进行同步IO,例如在程序最初启动和加载时({{1}你正在编写一个不提供网络服务的命令行程序(构建脚本,实用程序等)。
答案 1 :(得分:0)