3 回答
TA贡献1836条经验 获得超5个赞
你的问题在于, 你用index === perPageFiles.length - 1判断任务已经执行完毕, 但这个判断只能说明最后一个发起的readFile已经结束, 因为异步的关系, 最后一个发起的readFile并不一定是最后一个结束的, 这并不能说明所有的readFile已经执行完毕.
可以作如下修改, 用额外的计数器
perPageFiles = filenames.slice(articleIndex, articleIndex + perPage);
let completedCount = 0;
perPageFiles.forEach(function(filename, index) {
fs.readFile(fileDirectory + filename + '.md', 'utf-8', function(err, data) {
if (err) throw err;
perPageDatas[index].articleContent = data.split('<!--more-->')[0];
completedCount++;
if (completedCount === perPageFiles.length) {
result.count = totalArticles;
result.data = perPageDatas;
result.ret = true;
res.send(result);
}
});
});
TA贡献1886条经验 获得超2个赞
添加回答
举报