我正在使用从 Spotify SDK 中提取的歌曲在我的应用中创建个人播放列表。 Spotify 歌曲有一个 uri,所以你只能用 Spotify 播放器播放轨道,它接受一个字符串 uri 并播放它,但我有一个完整的轨道 URI 数组。为了解决这个问题,我创建了一个 for..in
循环来播放每一首歌曲,但它遍历整个数组并只播放数组中的最后一首轨道 uri。
我的问题是:有没有办法让 for..in
循环等待每个项目完成播放,然后再遍历数组的其余部分?
最佳答案
如果您想按顺序播放歌曲(如播放列表),您需要为它们添加一个连续的 DispatchQueue
。串行队列将确保一次只有一个项目在其中执行,因此一次只会执行一个异步请求,这意味着 for 循环的每次迭代都将等待前一个完成。
let queue = DispatchQueue(label: "serial")
for song in playAllSongs{
queue.async{
//put all code here that you had inside the for loop
}
}
关于swift - 如何使循环中的 "for..in"等待函数快速执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45488498/