【发布时间】:2022-12-03 00:12:47
【问题描述】:
我在很多地方等待我的功能,但它仍然显示有待处理的承诺。
我正在尝试通过 url 获取 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
} else {
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 为什么。
我还尝试解决第二个功能中的承诺,但仍然相同。
【问题讨论】:
标签: javascript node.js asynchronous https youtube-api