intenetのダウンロード要求から補完ブロックのタイミングについてよく知りたいです。この場合の火災基地。次のコード例は何もしませんが、私の質問を示しています。非同期コールバックのタイミング
は、私がkeysArrayに100個の値を持っていると言う、100 firebaseする非同期リクエストと終了ブロックが存在するであろう、私はループのためにこのような大きなを使用しています100回
func someFunction() {
for keys in keysArray {
loadDataFromFirebaseWithKey(completionHandler: { (success, data) in
print(data)
// Task A Some length for loop
for i in 0...10000 {
print("A")
}
// Task B
for i in 10001...20000 {
print("B")
}
})
// Task C
for i in 20001...30000 {
print("C")
}
// Task D
for i in 30001...40000 {
print("D")
}
}
// Task E
for i in 40001...50000 {
print("E")
}
// Task F
for i in 50001...60000 {
print("F")
}
}
理由はいくつかを説明するためにある実行されます。時間のかかる/非同期のプロセスです。ここで私は
を思っていた3ケースプログラムは、タスクCを介して途中であれば、それはAとB
セイを行うには、完了ブロックに入る前にCを終了し、また、Dんセイは、プログラムは、タスクEを通じて途中であれば、それはAを行うには、完了ブロックに入る前に、Eを終了し、また、Fず、B
これらの結果が正しい場合は、すべて印刷しています。だから理想的には結果を見るべきです。 –
この質問を投稿するのではなく、実際にテストを行ってみませんか?どのような結果が得られますか?結果に基づいて、その結果を理解できない場合は、質問が更新され、結果が期待どおりに異なる理由が尋ねられます。 – rmaddy
"あなたはそれを試しましたか?"私たちが並行性について話しているときには、経験的な証拠が決定的であるべきであると助言することには注意が必要です。それは契約上の保証です。あなたが開発中に1万人の競合状態に遭うかどうかは関係ありません。 – Tommy