Javascript 最有效或最快的方法,可以非常频繁地使用节点fs写入文件

Javascript 最有效或最快的方法,可以非常频繁地使用节点fs写入文件,javascript,node.js,fs,Javascript,Node.js,Fs,假设我有一个包含许多关键字的数组,我正在逐个或成批地将这些关键字传递给api,然后使用节点fs将响应写入csv。什么方法更快或更有效createWriteStream或appefilefromfs/promises createWriteStream import { createWriteStream } from 'fs' const arr = ['many keywords',...] (async () => { const writter = createWriteSt

假设我有一个包含许多关键字的数组,我正在逐个或成批地将这些关键字传递给api,然后使用节点fs将响应写入csv。什么方法更快或更有效
createWriteStream
appefile
from
fs/promises

createWriteStream

import { createWriteStream } from 'fs'

const arr = ['many keywords',...]

(async () => {
  const writter = createWriteStream('results.csv', { flags: 'a' })

  for (let i = 0; i < arr.length; i++) {
    // For each keyword access an api and write the response to a file
    const { data } = await axios(`https://someapi?request=${arr[i]}`)
    writter.write(`${data.response}\n`)
  }

})()
从“fs”导入{createWriteStream}
常量arr=['许多关键字',…]
(异步()=>{
const writer=createWriteStream('results.csv',{flags:'a'})
for(设i=0;i
追加文件

import { appendFile } from 'fs/promises'

const arr = ['many keywords',...]

(async () => {
 
  for (let i = 0; i < arr.length; i++) {
    // For each keyword access an api and write the response to a file
    const { data } = await axios(`https://someapi?request=${arr[i]}`)
    await appendFile('results.csv', `${data.response}\n`)
  }

})()
从'fs/promises'导入{appendFile}
常量arr=['许多关键字',…]
(异步()=>{
for(设i=0;i
与顺序http请求的缓慢性相比,这可能根本不重要。如果它是批量并发的呢?那么每个批使用一个
appendFile
调用可能是最简单的。一个写流在理论上应该更快,因为它没有重复打开/关闭文件的开销,但是要正确地完成它,你需要考虑一个慢文件系统的背压,这不是微不足道的。哪一个有效?您必须像@lvaro指出的那样处理并发吗?我是否必须在每个批处理之后关闭流?