2017-08-08 52 views
1

我目前正在利用所谓XLSX如何使同步功能在异步的NodeJS

我必须分析大尺寸的Excel解析库excel文件和问题是XLSX只支持同步readFile请求。因此,当发出多个http请求时,XLSX读取功能会阻止其他请求,导致用户体验非常糟糕。我目前使用expressJS作为我的框架。有没有办法使该功能异步,而不必更改Excel阅读库?

感谢

+1

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

+0

@Paul谢谢。我会考虑的 – forJ

回答

3

我只知道有三种选择:

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

没有办法让一个使用同步I/O的函数在不重写或移动到另一个进程的情况下神奇地变为异步。

+0

谢谢。第二选择看起来是一个好方法,否则第三。每次发出新请求时,如果我决定产生一个新的读取进程,我是否应该知道有什么? – forJ

+0

@serendipity - 如果没有工作进程准备就绪,您可能希望对打开的进程数加上限制并使用队列。这可以通过导致您创建过多进程来防止DOS攻击。 – jfriend00

+0

谢谢,我会确保这一点 – forJ