console.log
выполняется раньше, чем items.push()
, поэтому вы видите пустой массив
Это должно работать так, как вы ожидаете
let items = [];
fs.readdir('.', (err, files) => {
const readable = files.filter((el) => /\.vide$/.test(el));
readable.forEach((script) => {
let data = fs.readFileSync(script, { encoding: 'utf8' });
const dom = htmlparser2.parseDOM(data);
const $ = cheerio.load(dom);
const CSS = $('Vide')
.clone()
.children()
.remove()
.end() //again go back to selected element
.text();
const str = css(CSS);
let jsCss = JSON.parse(str);
items.push(jsCss);
});
console.log(items);
});
Также вы можете использовать readdirSync()
, чтобы пропустить обратный вызов, как это:
let items = [];
const files = fs.readdirSync('.');
const readable = files.filter((el) => /\.vide$/.test(el));
readable.forEach((script) => {
let data = fs.readFileSync(script, { encoding: 'utf8' });
const dom = htmlparser2.parseDOM(data);
const $ = cheerio.load(dom);
const CSS = $('Vide')
.clone()
.children()
.remove()
.end() //again go back to selected element
.text();
const str = css(CSS);
let jsCss = JSON.parse(str);
items.push(jsCss);
});
console.log(items);