按顺序执行Dispatch main

时间:2017-01-25 06:55:32

标签: ios swift grand-central-dispatch

如何按顺序执行一组调度代码。 例如:

Dispatch.main.async{
 //call API, it may takes 5-10 seconds..
 //do something..
   print("done 1")
}

Dispatch.main.async{
//call API, it may takes 5-10 seconds..
//do something
  print("done 2")
}

Dispatch.main.asyncAfter{
  print("completed")
}

Output:
 completed
 done1
 done2

Expected output:
 done1
 done2
 completed

我使用main,因为'do something'填充了UI的resut。 我尝试使用global()但是'completed'总是首先执行并且不适合使用调度时间延迟,因为无法确认API调用时间有多长。需要一个快速的建议〜

1 个答案:

答案 0 :(得分:0)

 DispatchQueue.main.async{
            //call API, it may takes 5-10 seconds..
            //do something..
            print("done 1")
        }

        DispatchQueue.main.async{
            //call API, it may takes 5-10 seconds..
            //do something
            print("done 2")
        }

        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1){
            print("completed")
        }

It will execute in sequence