【发布时间】:2017-05-19 10:42:09
【问题描述】:
我无法让许多异步操作的流程正确流动。正如我现在下面的代码所示,outside readFile 首先打印到控制台,然后是 names 和 years 接下来打印,最后是 in readFile,当我想要整个 readFile/@987654326 时@处理之前发生的事情。
const fs = require('fs')
const names = {}
const years = {}
fs.readdir('./namesData', (err, files) => {
files.forEach(file => {
var year = file.substr(3, 4)
var yearObj = {}
fs.readFile(`./namesData/${file}`, 'utf8', (err, data) => {
console.log('in readFile')
if (err) throw new Error(err)
var arr = data.split('\n')
arr.forEach(record => {
var recordArray = record.trim().split(',')
var name = recordArray[0]
var gender = recordArray[1]
var score = recordArray[2]
// populate 'names' object
var nameObj = {year: year, gender: gender, score: score}
if (names.hasOwnProperty(name)) {
names[name].push(nameObj)
} else {
names[name] = [nameObj]
}
// populate 'years' object & add to yearObj and then years object
var yearNameObj = {gender: gender, score: score}
if (yearObj.hasOwnProperty(name)) {
yearObj[name].push(yearNameObj)
} else {
yearObj[name] = [yearNameObj]
}
})
})
console.log('outside readFile')
years[year] = yearObj
})
console.log(names)
console.log(years)
})
【问题讨论】:
-
您能否发布示例数据
years和names的样子?
标签: node.js asynchronous fs