如何使用异步回调使在主线程中运行的任务串行队列?

在这种情况下,我必须将异步callback视为任务的一部分。我只希望同时运行一个任务。

这是样板:

func queueATask() {
    DispatchQueue.main.async {
         doSomeHeavyWorkPartA()
         //tunnelProvider is an instance of NETunnelProviderManager
         tunnelProvider.saveToPreferences {
              continueHeavyWorkPartB()
         }
    }
}

因此我可以多次调用此函数。但是仍然要在运行新任务之前完成上一个任务(包括partA和PartB)。

queueATask()
queueATask()
queueATask()

我正在考虑DispatchGroupDispatchSemaphore,但是它需要阻止不可行的主队列?所有任务必须在主队列中运行。如果没有partB回调块,它将容易得多,我认为这是解决这种情况的难点。

请指导我如何解决此问题。

谢谢

leinzen 回答:如何使用异步回调使在主线程中运行的任务串行队列?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3154430.html

大家都在问