我正在尝试阅读一些JSON文件并将其结果存储到一个数组中。我有:
const files = ['file0.json', 'file1.json', 'file2.json', 'file3.json']
为了阅读所有这些内容并创建文件内容的结果数组,我这样做:
import { readFile } from 'fs'
import async from 'async'
const files = ['file0.json', 'file1.json', 'file2.json', 'file3.json']
function read(file, callback) {
readFile(file, 'utf8', callback)
}
async.map(files, read, (err, results) => {
if (err) throw err
// parse without needing to map over entire results array?
results = results.map(file => JSON.parse(file))
console.log('results', results)
})
这篇文章帮助我实现了目标:Asynchronously reading and caching multiple files in nodejs
我想知道的是如何在读取文件的中间步骤中调用JSON.parse()
,而不是在结果数组上调用map
。我想澄清一下,如果不是为了正确地调用callback
而传入的readFile
参数,究竟是什么juliarc
参数。
答案 0 :(得分:1)
好吧,也许你应该在阅读步骤中移动JSON.parse
import { readFile } from 'fs'
import async from 'async'
const files = ['file0.json', 'file1.json', 'file2.json', 'file3.json']
function read(file, callback) {
readFile(file, 'utf8', function(err, data) {
if (err) {
return callback(err);
}
try {
callback(JSON.parse(data));
} catch (rejection) {
return callback(rejection);
}
})
}
async.map(files, read, (err, results) => {
if (err) throw err;
console.log('results', results)
})
我建议您阅读this article以了解回调函数的含义。