gpt4 book ai didi

javascript - 方法不等待提取完成

转载 作者:行者123 更新时间:2023-12-01 00:49:28 24 4
gpt4 key购买 nike

我正在使用Node Ytdl以获取视频的元数据。我有一个“provider”函数,我想返回视频的元数据对象。

const getMetaD = async (mediaID) => {
let obj = {};

await ytdl.getInfo(mediaID, {}, async (err, info) => {
if (err) console.log(err);

let format = await ytdl.chooseFormat(info.formats, { quality: 'highest' });

if (format) {
console.log('Format found!', format);
obj = { url: format.url, thumbnail: info.thumbnail, title: info.title };
}
});

return obj;
}

但是,我的 getMetaD 函数永远不会返回在 if(format) block 中分配的对象。它将始终返回 obj = {}。我究竟做错了什么?为什么我的代码在返回之前不等待将结果分配给 obj

最佳答案

您正在回调中使用await。它只对 promise 有效。不过,您可以通过这样做来实现同样的目标。

const getMetaD = (mediaID) => {
return new Promise((resolve, reject) => {
let obj = {};

ytdl.getInfo(mediaID, {}, async (err, info) => {
if (err) console.log(err);

let format = await ytdl.chooseFormat(info.formats, { quality: 'highest' });

if (format) {
console.log('Format found!', format);
obj = { url: format.url, thumbnail: info.thumbnail, title: info.title };
}
resolve(obj);
});
})

}

关于javascript - 方法不等待提取完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57103194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com