在由两个forEach循环填充后,我想用“内容”解决这个承诺。
'use strict';
const {promisify} = require('util');
const fs = require('fs');
const readFileAsync = promisify(fs.readFile);
const readDirAsync = promisify(fs.readdir);
const writeFileAsync = promisify(fs.writeFile);
function writeImportStatement(filepath) {
return new Promise((resolve, reject) => {
let content = '';
readDirAsync(`${filepath}/scss`)
.then((files) => {
files.forEach((file) => {
fs.stat(`${filepath}/scss/${file}`, (err, stats) => {
if (stats.isDirectory()) {
readDirAsync(`${filepath}/scss/${file}`)
.then(scssfiles => {
scssfiles.forEach((scssfile) => {
content += `@import "${filepath}/scss/${file}/${scssfile}"; \n`;
});
})
}
});
});
console.log("loging import statement content: " + content);
resolve(content);
});
})
}
目前尚不确定。
答案 0 :(得分:-1)
我将其更改为async / await以使其更易于阅读,看来您的主要问题是您的files.forEach
需要包装在Promise.all
中,每次迭代都返回一个诺言-如果您只想遵守诺言而不是异步/等待,则最终console.log
和resolve
必须在该then
的{{1}}语句中。< / p>
Promise.all