[英]Accessing variable from outside of anonymous functions
我試圖能夠在 foreach 和 readdir function 之外獲取變量 jsCss 的值。 我似乎無法弄清楚。 我試圖將它推送到一個全局變量,但是當我記錄我推送到的數組時,它仍然返回一個空數組。 我將如何 go 這樣做?
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()
.text();
const str = css(CSS);
let jsCss = JSON.parse(str);
items.push(jsCss);
})
});
console.log(items)
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.