我的任务是为节点js + express中的多个用户生成excel文件。我尝试在循环中执行此操作,当然,它可以正常工作。
但是发生的是,它将把那个循环带入内存并立即生成文件。假设系统中有10000个用户,并且我想在单个函数或cron中生成文件,那么它将耗尽内存,并且操作将失败。
因此,我想到了一种新方法。您将循环遍历10000次,并开始生成文件的过程。创建单个文件后,仅在循环之后才继续创建第二个文件,依此类推。我知道这将花费一些时间,但是它将仅将一个项目存储到内存中以生成文件。如果此过程看起来很慢,那么让我们一次生成10个文件而不是1个文件。
我如何在Node js中开发这种系统?我尝试了异步,但它的工作原理基本上与以前的方法相同。当所有文件都生成后,我希望最终响应“完成”。在那之前
async function printFiles () {
const files = await [ ...Array(10).keys() ];;
for (i=0; i< files.length; i++) {
let file = 'done ' + i;
console.log(file); // Set a 1 sec timeout. Prints: 'done 1', then 1 second later 'done 2' and so on.
}
}
printFiles();
因此,根据上面的示例,我应该看到文件是一个接一个地生成的,而不是一次生成所有文件。
谢谢。