我正在尝试使用离子媒体插件播放多个音频文件: https://ionicframework.com/docs/native/media。但我很难在不使用超时功能的情况下使其作为播放列表工作。
这是我尝试过的
playOne(track: AudioFile): Promise<any> {
return new Promise(async resolve =>{
const AudFile = await this.media.create(this.file.externalDataDirectory+track.trackUrl);
await resolve(AudFile.play())
});
}
Run Code Online (Sandbox Code Playgroud)
然后玩 All ,我有这个:
async playAll(tracks: AudioFile[]): Promise<any>{
let player = (acc, track:AudioFile) => acc.then(() =>
this.playOne(track)
);
tracks.reduce(player, Promise.resolve());
}
Run Code Online (Sandbox Code Playgroud)
这样他们就可以同时玩了。
但是如果 PlayOne 方法包裹在超时函数中,则播放列表中存在超时设置的毫秒间隔,但一个播放列表不一定先于另一个播放列表完成,有时会等待很长时间才能播放后续文件是格子的。
超时实现如下所示:
playOne(track: AudioFile): Promise<any> {
return new Promise(async resolve =>{
setTimeout(async ()=>{
const AudFile = await this.media.create(this.file.externalDataDirectory+track.trackUrl);
await resolve(AudFile.play())
},3000)
});
}
Run Code Online (Sandbox Code Playgroud)
深入研究插件的离子包装器,创建方法如下所示:
/**
* Open a media file
* @param src {string} A …
Run Code Online (Sandbox Code Playgroud) javascript ionic-framework cordova-media-plugin angular ionic4