等待每个playStream()在开始读取下一个之前完成

问题描述 投票:0回答:1

我有一个.mp3格式的音乐库,存储在Google云端硬盘文件夹中,有一堆音乐文件,我希望能够一个接一个地播放。我能够分别读取和流式传输每个文件,但是当我尝试从文件夹中“排队”所有文件并一个接一个地播放时,它不会等到一个流(歌曲)播放完毕后再播放。下一步,而是立即开始下一首歌曲,这将导致整个文件夹中只播放最后一首歌曲。我假设我必须弄乱我之前在discord.js开发中所做的async / await,或者不熟悉的Promises和Promise.all()。这是代码的相关部分。

var folderId = "'the-folder-id'";
drive.files.list({
    q: folderId + " in parents", // to get all the files in the folder
    fields: 'files(id)'
}, (err, res) => {
    if (err) throw err;
    const files = res.data.files;
    files.map(file => {
        drive.files.get({
            fileId: file.id,
            alt: 'media'
        },
        { responseType: "stream" },
        (err, { data }) => {
            message.member.voiceChannel.join().then(connection => {
                const dispatcher = connection.playStream(data); // doesn't wait for this to finish to play the next stream (song)
            }).catch(err => console.log(err));
        });
    });
});

[请注意,我有一条命令使漫游器离开频道,因此正常情况下我的代码中没有任何voiceChannel.leave(),因为我不希望它在歌曲播放完毕后立即离开。] >

欢迎任何意见,在此先谢谢您!

我有一个.mp3格式的音乐库,存储在Google云端硬盘文件夹中,有一堆音乐文件,我希望能够一个接一个地播放。我能够分别读取和流式传输每个文件,...

node.js google-drive-api discord.js audio-streaming
1个回答
1
投票
  • 您想通过从Google云端硬盘中的特定文件夹下载多个MP3文件来播放它们。
© www.soinside.com 2019 - 2024. All rights reserved.