Javascript 变量未获取分配给它的信息
当我使用此代码时,Javascript 变量未获取分配给它的信息,javascript,Javascript,当我使用此代码时,musicData显示为undefined,即使我将其设置为metaData。另外,我知道元数据中包含信息 let musicData; for(i = 0; i < queue.length; i++) { queueString += i + 1 + ": `" + queue[i] + "`\n"; mm.parseFile(config.MUSIC_DIR + queue[i]).then( metadata =&g
musicData
显示为undefined
,即使我将其设置为metaData
。另外,我知道元数据中包含信息
let musicData;
for(i = 0; i < queue.length; i++) {
queueString += i + 1 + ": `" + queue[i] + "`\n";
mm.parseFile(config.MUSIC_DIR + queue[i]).then( metadata => {musicData = metadata;});
console.log(musicData);
}
让音乐CDATA;
对于(i=0;i{musicData=metadata;});
console.log(musicData);
}
如果尝试从for循环返回musicData变量,它总是显示未定义。
因此,很好地了解如何从for循环返回数据。
否则,请尝试在for循环中使用musicData变量
那样
for(i = 0; i < queue.length; i++)
{
let musicData;
queueString += i + 1 + ": `" + queue[i] + "`\n";
mm.parseFile(config.MUSIC_DIR + queue[i]).then( metadata => {musicData = metadata;});
console.log(musicData);
}
for(i=0;i{musicData=metadata;});
console.log(musicData);
}
尝试使用包含等待的循环的
let musicData;
let index = 0;
(async () => {
for (const element of queue) {
index++;
queueString += index + ": `" + element + "`\n";
await mm
.parseFile(config.MUSIC_DIR + element)
.then((metadata) => (musicData = metadata));
console.log(musicData);
}
})();
这是否在异步函数中?如果是这样,您可以等待mm.parseFile
。否则,您不能像这样将结果分配给musicData
。这是否回答了您的问题?这会在Firefox中抛出一个错误:“uncaughtSyntaxerror:missing(在for之后)”为什么这样可以解决问题?原因是for循环有一个由布尔变量控制的退出点。它不需要返回语句,返回语句只用于函数体中。我之所以这样问,是因为mm.parseFile
是一个承诺,所以它的then
可以在console.log(musicData)之后运行
。因此,我对解决问题的方法感到困惑。--(这就是问题被标记为重复的原因)