3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
你的問(wèn)題在于, 你用index === perPageFiles.length - 1判斷任務(wù)已經(jīng)執(zhí)行完畢, 但這個(gè)判斷只能說(shuō)明最后一個(gè)發(fā)起的readFile已經(jīng)結(jié)束, 因?yàn)楫惒降年P(guān)系, 最后一個(gè)發(fā)起的readFile并不一定是最后一個(gè)結(jié)束的, 這并不能說(shuō)明所有的readFile已經(jīng)執(zhí)行完畢.
可以作如下修改, 用額外的計(jì)數(shù)器
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貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
這個(gè)能用promise或者async來(lái)處理么
可以,但是本來(lái)就提供了同步API的readFileSync
。

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
添加回答
舉報(bào)