NodeJS 我的异步函式显示承诺搁置中

ca1c2owp  于 2022-12-03  发布在  Node.js
关注(0)|答案(1)|浏览(115)

我在许多地方等待我的功能,但它仍然显示出希望悬而未决。
我试图通过网址获取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为什么。
我也试着解决第二个功能中的承诺,但还是一样。

zkure5ic

zkure5ic1#

checkurl返回一个Promise,因为它是一个async函数。
您需要先await.then它,然后才能console.log它的值。
第一个

相关问题