2016-09-26 167 views
0

如何在swift中獲得異步延遲?swift中的異步延遲

我有3個函數說,假設函數first(),second()和third()被異步調用。但在second()函數中延遲了10秒之後,第三個函數在10秒之後被調用,而不是我只希望函數中的代碼在10秒之後被調用,而不是第三個函數。

在此先感謝。

+0

發佈一些代碼,你tryed – Ragul

+0

FUNC第二(){延遲(秒:10){ 打印( 「所謂的第二功能」) }} –

+0

請你能告訴我如何使用回調?我是swift新手 –

回答

1

假設......

  • 您的所有功能不包含任何異步調用,即在每個函數的所有指令一個接着一個。
  • 功能之間沒有依賴關係,它們可以按任意順序執行。

...您可以使用OperationQueue(斯威夫特2以前NSOperationQueue):即使該功能是爲了增加

func first() { print("First") } 
func second() { print("Second") } 
func third() { print("Third") } 

// Since we will block the queue while wait for all three functions to complete, 
// dispatch it to a background queue. Don't block the main queue 
DispatchQueue.global(qos: .background).async { 
    let queue = OperationQueue() 
    queue.addOperation(first) 
    queue.addOperation(second) 
    queue.addOperation(third) 

    queue.waitUntilAllOperationsAreFinished() 

    // Now all your functions are complete 
} 

注意,他們的執行順序無法確定。