如何在for循环中创建延迟的函数在另一个线程上起作用,以便主线程不会受到影响。 假设我的数组中有100个数据,我想逐个从数组中选择数据,并在1-2秒的延迟时间内提交数据进行处理,主线程不应受到影响。
我如何实现这一点,我尝试了很多解决方案,但他们没有正常工作
private func synchDataWithCloudIfAvailable() {
let arrUrl = SwiftFileManager.getListOfFileURLFromDictory(dicrectoryName: KSensor_Directory)
if arrUrl != nil {
if arrUrl!.count > 0 {
self.diskOperationSerialQueue?.async(execute: {
for url in arrUrl! {
let blockOperation = BlockOperation()
blockOperation.addExecutionBlock({
let data = SwiftFileManager.getDataFromFileUrl(url: url)
if data != nil {
//self.uploadDataToCloud(data: data!, localUrl: url)
//SwiftFileManager.deleteFileFromUrl(url: url)
}
})
self.backgroundQueue.addOperation(blockOperation)
usleep(useconds_t(QuaterSecond))
}
})
}
}
你觉得usleep(useconds_t(QuaterSecond))是个好主意还是还有其他更好的做法
答案 0 :(得分:0)
试试这个:
DispatchQueue.global().asyncAfter(deadline: .now() + .seconds(2), execute: {
print("do something here")
})