swift - 如何使循环中的 "for..in"等待函数快速执行?

标签 swift for-loop

我正在使用从 Spotify SDK 中提取的歌曲在我的应用中创建个人播放列表。 Spotify 歌曲有一个 uri,所以你只能用 Spotify 播放器播放轨道,它接受一个字符串 uri 并播放它,但我有一个完整的轨道 URI 数组。为了解决这个问题,我创建了一个 for..in 循环来播放每一首歌曲,但它遍历整个数组并只播放数组中的最后一首轨道 uri。

我的问题是:有没有办法让 for..in 循环等待每个项目完成播放,然后再遍历数组的其余部分?

array of track uri's

function that plays each individual URI

最佳答案

如果您想按顺序播放歌曲(如播放列表),您需要为它们添加一个连续的 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/

相关文章:

ios - 使用 UIScrollViews

python - 有没有办法从 IOS 应用程序调用 flask 应用程序中的多个获取和发布请求

java - xPath 在使用 for-each 循环变量时找不到选择器,但在其他情况下有效

c - C中循环结束时如何执行指令

bash:遍历 float 列表

swift - Decodable 类型的数组不可解码

ios - "This application is modifying the autolayout engine"错误(Swift iOS)

iOS swift : Parsing response json with AFNetworking

Javascript:在for循环中隐藏原型(prototype)方法?

c++ - 对于不可复制类型的范围循环,是否可能?