最近一個案子有個需求,需要call 2隻API,並且得到2隻API回傳的結果後,才做資料處理及UI顯示。 做法1: 2隻API沒有前後順序 Code: print ( "Group created" ) //產生兩個task let task1 = DispatchQueue (label: "task1" ) let task2 = DispatchQueue (label: "task2" ) //產生DispatchGroup let group = DispatchGroup () group . enter () task1 . async (group: group , qos: . default ) { print ( "task1 start" ) sleep ( 10 ) print ( "task1 end" ) group . leave () } group . enter () task2 . async (group: group , qos: . default ) { print ( "task2 start" ) sleep ( 5 ) print ( "task2 end" ) group . leave () } group . notify (queue: . main , execute:{ print ( "All task is done" ) //self.reloadUI() }) Result: Group created task1 start task2 start task2 end task1 end All task is done 可以看到task1執行10秒,task2執行5秒,所以task2先結束了,並沒有按照順序執行 做法2: API有先後順序,加入...