2016-09-26 2 views
0

신속한 비동기 지연은 어떻게받을 수 있습니까?신속한 비동기 지연

필자는 비동기 적으로 호출되는 first(), second() 및 third() 함수가 있다고 가정합니다. 그러나 second() 함수에 10 초의 지연 시간을 가한 후 세 번째 함수는 10 초 후에 호출됩니다. 두 번째 함수 내의 코드는 세 번째 함수가 아니라 10 초 후에 호출되기를 원합니다.

미리 감사드립니다.

+0

포스트는 – Ragul

+0

FUNC의 초() tryed 몇 가지 코드 {지연 (초 : 10) { 인쇄 ("라는 두 번째 기능은") }}이 –

+0

를 어떻게 콜백을 사용하는 저를 보여줄 수주십시오? 나는 새롭다 신속한 –

답변

1

  • 는 귀하의 모든 기능은 어떤 비동기 호출, 즉 각 기능의 모든 지시가 서로를 따라가 포함되어 있지 않습니다 ... 가정합니다.
  • 함수간에 의존 관계가 없으며 어떤 순서로든 실행할 수 있습니다.

... 당신은 OperationQueue (이전 NSOperationQueue 스위프트 2) 사용할 수 있습니다 기능이 순서에 추가 되더라도

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 
} 

참고, 자신의 실행 순서를 결정 할 수 없습니다.

관련 문제