带有 Youtube API 请求的 Promise
我目前正在 discord.js 中制作一个不和谐的机器人,并且我正在尝试制作一个音乐功能。现在我知道这个功能有效,因为我通过给它一个设置的视频 URL 对其进行了测试。我最近尝试实现对用户输入的支持(例如$play vfx artists react
,使用 youtube API,但是当我尝试检索 url 时遇到错误消息。
我知道错误与承诺有关,因为当我尝试检索标题和 URL 时,API 并没有真正检索到数据。我对承诺不是很好,到目前为止我的尝试都是徒劳的,所以任何帮助都将不胜感激。
代码 ->
相关的 npm 模块。
const YouTube = require('youtube-node');
var youTube = new YouTube();
youTube.setKey('MyKey');
这是我得到错误的函数,我以前听说过承诺,但是每次我使用一个时,我要么记录一个“待处理的承诺”,要么遇到一个错误。
function addVideo(term) {
youTube.search(term, 1,
function (error, result) {
return [result.items[0].snippet.title, result.items[0].id.videoId];
});
}
然后我在这里调用这个函数,
searchResult = addVideo(args.join(' '))
song = {
title: searchResult[0],
url: searchResult[1],
};
在线发现错误title: searchResult[0]
(node:4) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '1' of undefined
对于那些感兴趣的人,可以在这里找到代码。 我知道这是一个 trainwreck atm,计划稍后使用导出/导入的东西将其转换为模块。