gpt4 book ai didi

javascript - 使系统等待创建文件

转载 作者:行者123 更新时间:2023-12-04 08:27:56 25 4
gpt4 key购买 nike

我的代码有效,但是,它跳过了几个步骤。
代码:

link = message.body.split(' ').slice(1).join(' ')
if(palavraChave == '/musica'){
apiDownload.downloadAudio(link)
await client.sendFile(message.from, 'C:/Users/mathe/Desktop/wpp/videos/musica.mp3', 'musica')
await fs.unlinkSync('C:/Users/mathe/Desktop/wpp/videos/musica.mp3')
}
Código api下载:
const ytdl = require('ytdl-core');
const fs = require('fs')

downloadAudio = (link)=>{
ytdl(link).pipe(fs.createWriteStream(`videos/musica.mp3`), console.log('criado!'))
}

exports.downloadAudio = downloadAudio;
上面的这段代码完美地下载了音频并将其放在我电脑上的一个文件夹中,但是,当我尝试发送这个创建的音频时,系统说它不存在。
注意:如果我再次运行它,它会找到该文件并发送它。
也就是说,问题是系统不等我创建文件就已经要发送了。
如何让系统等待我在我的文件夹中创建文件,创建后发送?
并且,发送后删除。
有人能帮助我吗。
我是初学者。

最佳答案

您需要知道文件何时被下载。为此,制作 downloadAudio 会很有用。返回一个 Promise。您应该能够像这样编辑它:

downloadAudio = link => {
return new Promise((resolve, reject) => {
const stream = ytdl(link, { filter: "audioonly" })
.pipe(fs.createWriteStream(`videos/musica.mp3`));
stream.on("error", reject);
stream.on("finish", () => { console.log("criado!"); resolve(); });
});
};
然后,在您的主函数中,添加 await在它面前:
await apiDownload.downloadAudio(link);

关于javascript - 使系统等待创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65174238/

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