【问题标题】:How to make sync function async in nodeJS如何在nodeJS中使同步功能异步
【发布时间】:2018-01-15 10:40:50
【问题描述】:

我目前正在使用一个名为 XLSX 的 excel 解析器库

我必须解析大尺寸的excel文件,问题是XLSX只支持同步readFile请求。所以当有多个http请求时,XLSX读取功能会阻塞其他请求,使用户体验非常糟糕。我目前使用 expressJS 作为我的框架。有没有办法让函数异步,而不必更改excel阅读库?

谢谢

【问题讨论】:

  • 值得指出的是,除了 xlsx 之外,您还有其他解析器选项。如果你想要一个异步版本,试试excel,它异步处理 xlsx 文件。
  • @Paul 谢谢。我也会调查一下

标签: node.js express asynchronous


【解决方案1】:

我只知道三个选择:

  1. 重写 XLSX 库以使用异步 I/O。
  2. 创建一个工作队列和几个子进程,并仅在子进程中运行 XLSX 工作。
  3. 选择一个使用异步 I/O 的不同库。

如果不重写或将其移动到另一个进程,就无法让使用同步 I/O 的函数神奇地变为异步。

【讨论】:

  • 谢谢。第二个选择看起来是一个好方法,否则第三个。如果我决定每次发出新请求时都生成一个新的读取进程,有什么需要注意的吗?
  • @serendipity - 如果没有准备好工作进程,您可能希望限制打开的进程数量并使用队列。这会导致您创建太多进程,从而防止 DOS 攻击。
  • 谢谢,我会确保的
猜你喜欢
  • 2016-12-14
  • 2021-08-05
  • 1970-01-01
  • 2013-04-05
  • 2023-03-20
  • 1970-01-01
  • 2014-03-28
  • 2017-06-20
  • 1970-01-01
相关资源
最近更新 更多