我在许多地方等待我的功能,但它仍然显示出希望悬而未决。
我试图通过网址获取YouTube视频缩略图。
我用下面的代码创建了一个index.js文件:
const checkurl = require('./checkurl.js');
console.log(checkurl('https://youtu.be/NbT4NcLkly8'));
并且checkurl.js具有:
const getvideoid = require('get-video-id');
const https = require('https');
const GOOGLEKEY = process.env['GOOGLEKEY'];
module.exports = async function(url) {
const urlinfo = getvideoid(url)
if (urlinfo.service == 'youtube' && urlinfo.id !== undefined) {
const result = await checkid(urlinfo.id)
return result
}
return false
};
function checkid(id) {
return new Promise((resolve, reject) => {
const url = 'https://www.googleapis.com/youtube/v3/videos?key=' + GOOGLEKEY + '&part=snippet&id=' + id
const req = https.request(url, (res) => {
res.setEncoding('utf8');
let responseBody = '';
res.on('data', (chunk) => {
responseBody += chunk;
});
res.on('end', () => {
const data = JSON.parse(responseBody);
if (data.items[0]) {
const thumbnail = data.items[0].snippet.thumbnails
resolve(thumbnail);
} else {
resolve(undefined);
};
});
});
req.on('error', (err) => {
reject(err);
});
req.end();
});
};
我等待着我所有的功能,返回承诺,但我仍然得到承诺,等待idk为什么。
我也试着解决第二个功能中的承诺,但还是一样。
1条答案
按热度按时间zkure5ic1#
checkurl
返回一个Promise
,因为它是一个async
函数。您需要先
await
或.then
它,然后才能console.log
它的值。第一个