swift - DispatchGroup 做、尝试、抓住?
问题描述
我正在使用 AudioKit 框架并希望使用 DispatchGroup 使方法异步工作。我希望 player.load 方法仅在创建 audioFile 后运行;现在它在大约 50% 的时间里抛出错误,我怀疑这是由于时间问题。我在其他情况下成功使用了 DispatchGroup,但从未在 do/try/catch 中使用过。有没有办法让这部分功能与它一起工作?如果没有,有没有办法设置关闭?谢谢!
func createPlayer(fileName: String) -> AKPlayer {
let player = AKPlayer()
let audioFile : AKAudioFile
player.mixer >>> mixer
do {
try audioFile = AKAudioFile(readFileName: "\(fileName).mp3")
player.load(audioFile: audioFile)
print("AudioFile \(fileName), \(audioFile) loaded")
} catch { print("No audio file read, looking for \(fileName).mp3")
}
player.isLooping = false
player.fade.inTime = 2 // in seconds
player.fade.outTime = 2
player.stopEnvelopeTime = 2
player.completionHandler = {
print("Completion")
self.player.detach()
}
player.play()
return player
}
解决方案
推荐阅读
- c# - 使用 dotnetzip 库附加到电子邮件后无法打开 Zip 文件
- angular - 无法在 eslint 中为 typescript linting 关闭规则显式函数返回类型
- python - 如何将GDAL降级到2.4版?
- css - 让独立的孩子在没有明确身高的情况下拥有父母的 100% 身高
- jenkins - 如何在测试工具中模拟 Jenkins 作业参数?
- c# - 索引超出 C# 控制台应用程序中数组错误的范围
- c# - 存储过程返回可为空的 DateTime 而不是 varchar
- python-3.x - python中的doopl参数设置
- sql - 在 SQL 中,有没有办法拆分 SQL 中存储为列表的列?
- ruby-on-rails - 在 ruby on rails 中自定义 JSON 响应