YTDL-CORE NODE.js音乐。如何获得视频标题。未定义的var

时间:2017-12-15 18:26:56

标签: javascript node.js for-loop discord.js

使用此代码:

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总是未定义。

1 个答案:

答案 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);