使用此代码:
for(var i = 1; i < (server.queue.length); i++) {
var songtitle
YTDL.getInfo(server.queue[i], function(err, info) {
songtitle = info.title;
});
list += `\n${i}. <${server.queue[i]}>`
}
message.channel.send(list);`enter code here`
var songtitle
始终未定义。
我尝试了很多不同的东西,但我仍然不知道为什么songtitle
总是未定义。
答案 0 :(得分:0)
您的代码问题是回调问题,特别是在同步与异步代码时,您可以了解有关here的更多信息。要解决此问题,请尝试将其余代码放在回调中而不是在回调之外。以下是使用async and await作为ytdl-core模块now supports promises的修复示例:
// Must be called within an async function.
for (var i = 1; i < (server.queue.length); i++) {
var info = await YTDL.getInfo(server.queue[i]);
var songtitle = info.title;
list += `\n${i}. <${server.queue[i]}>`
}
message.channel.send(list);