Javascript Node.js/Express.js-我是否应该将所有函数包装在一个新的承诺中?

Javascript Node.js/Express.js-我是否应该将所有函数包装在一个新的承诺中?,javascript,node.js,express,Javascript,Node.js,Express,Express文档说明: 不要使用同步函数 同步函数和方法将执行过程绑定到 他们回来了。对同步函数的单个调用可能会在 但在高流量网站中,只有几微秒或几毫秒, 这些调用会增加并降低应用程序的性能。避开他们的 用于生产 我的问题是,在节点/ Express的上下文中,如果我有一个函数接受某个静态值并返回一个计算结果,我通常会考虑一个同步函数,那么在一个新的约定内把这个函数包起来并解决这个结果是最好的做法吗?或者这会造成任何显著的不必要开销吗?例如: 当前: 新的和改进的? 简短回答:没有 该文档讨论

Express文档说明:

不要使用同步函数 同步函数和方法将执行过程绑定到 他们回来了。对同步函数的单个调用可能会在 但在高流量网站中,只有几微秒或几毫秒, 这些调用会增加并降低应用程序的性能。避开他们的 用于生产

我的问题是,在节点/ Express的上下文中,如果我有一个函数接受某个静态值并返回一个计算结果,我通常会考虑一个同步函数,那么在一个新的约定内把这个函数包起来并解决这个结果是最好的做法吗?或者这会造成任何显著的不必要开销吗?例如:

当前: 新的和改进的? 简短回答:没有

该文档讨论的是不使用同步版本的函数,例如nodeJS文件系统中的readfileSync或bcrypt.compareSync。同步调用会阻塞nodeJS中的事件循环。因此,在等待同步调用完成时,不会发生任何事情。当这个方法完成时,整个程序处于暂停状态。这在像nodeJS这样的单线程系统中是不好的

没有理由用回调或承诺来包装仅仅是简单计算或数组操作的函数

它只是说,如果有一个库/方法提供该方法的同步版本,请尽量避免使用该方法

退房:

Node.js中的JavaScript执行是单线程的,因此并发性 指事件循环执行JavaScript回调的能力 完成其他工作后的功能。任何希望 以并发方式运行必须允许事件循环继续 正在以非JavaScript操作(如I/O)的形式运行

作为一个例子,让我们考虑一个对Web的每个请求的情况。 服务器需要50毫秒才能完成,其中45毫秒是数据库I/O 这可以异步完成。选择非阻塞异步 操作会为每个请求释放45毫秒的时间来处理其他请求。 仅通过选择使用,这在容量上是一个显著的差异 非阻塞方法而不是阻塞方法

事件循环与许多其他语言中的模型不同,其中 可以创建其他线程来处理并发工作

关于额外的开销,将所有内容包装在承诺中。答案仍然是否定的

你将体验不到任何不同

function sum(x,y) {
  return x+y
}

const ans = sum(1,2)
console.log(ans) // 3

简短回答:没有

该文档讨论的是不使用同步版本的函数,例如nodeJS文件系统中的readfileSync或bcrypt.compareSync。同步调用会阻塞nodeJS中的事件循环。因此,在等待同步调用完成时,不会发生任何事情。当这个方法完成时,整个程序处于暂停状态。这在像nodeJS这样的单线程系统中是不好的

没有理由用回调或承诺来包装仅仅是简单计算或数组操作的函数

它只是说,如果有一个库/方法提供该方法的同步版本,请尽量避免使用该方法

退房:

Node.js中的JavaScript执行是单线程的,因此并发性 指事件循环执行JavaScript回调的能力 完成其他工作后的功能。任何希望 以并发方式运行必须允许事件循环继续 正在以非JavaScript操作(如I/O)的形式运行

作为一个例子,让我们考虑一个对Web的每个请求的情况。 服务器需要50毫秒才能完成,其中45毫秒是数据库I/O 这可以异步完成。选择非阻塞异步 操作会为每个请求释放45毫秒的时间来处理其他请求。 仅通过选择使用,这在容量上是一个显著的差异 非阻塞方法而不是阻塞方法

事件循环与许多其他语言中的模型不同,其中 可以创建其他线程来处理并发工作

关于额外的开销,将所有内容包装在承诺中。答案仍然是否定的

你将体验不到任何不同

function sum(x,y) {
  return x+y
}

const ans = sum(1,2)
console.log(ans) // 3


我认为文档是说您应该选择readFile而不是readFileSync等。当存在异步替代时,节标题可能应该是read而不是使用同步函数。我认为文档是说您应该选择readFile而不是readFileSync等。节标题可能应该是read而不是使用当存在异步替代方案时,同步功能
function sum(x,y) {
  return x+y
}

const ans = sum(1,2)
console.log(ans) // 3
function sum(x,y) {
 return Promise.resolve(x+y) // Shorthand for your new Promise
}

sum(1,2).then(ans => {
  console.log(ans) //3
})