我可以在内部使用延迟进行循环吗?

时间:2017-11-22 06:43:05

标签: swift

如何在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))是个好主意还是还有其他更好的做法

1 个答案:

答案 0 :(得分:0)

试试这个:

DispatchQueue.global().asyncAfter(deadline: .now() + .seconds(2), execute: {
    print("do something here")
})