2016-09-26 6 views
0

すぐに非同期遅延を取得するにはどうすればよいですか?即時の非同期遅延

私は関数first()、second()、およびthird()が非同期に呼ばれているとします。しかし、second()関数に10秒の遅延を入れた後、3番目の関数は10秒後に呼び出されるのではなく、3番目の関数ではなく10秒後に呼び出されるようにします。

ありがとうございます。

+0

ポストあなたが – Ragul

+0

FUNC秒()しようと試みたいくつかのコード{遅延(秒:10){ プリント(「と呼ばれる第2の機能を」) }} –

+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 
} 

注、その実行順序を決定することができません。

関連する問題