Iは、succsss
追加非同期応答は、3
応答が追加または順序でそれらを連結する必要があるます関数を介して機能にdataTask
戻るを使用してAPIからデータを取得するティッカーを生成しますよしかし、私はそれを行うことができません。
ここで私が試したのは、個々のティッカー成功呼び出しが返される前に最後の印刷行が実行されるため、両方とも失敗します。
func getTicker() {
var tickerText = ""
tickerText += dataRequestnew("https://api-path-here/1") { success in return "First-item: \(success)" }
tickerText += dataRequestnew("https://api-path-here/2") { success in return " | Second-item: \(success)" }
print(tickerText)
}
または第二の例では
var tickerText = ""
func getTicker() {
dataRequestnew("https://api-path-here/1") { success in
self.tickerText += "First-item: \(success)"
print(self.tickerText)
}
dataRequestnew("https://api-path-here/2") { success in
self.tickerText += " | Second-item: \(success)"
print(self.tickerText)
}
print(self.tickerText)
}
、成功した個別銘柄のプリントではなく、最後の一つは、それが唯一のデフォルト値を返します。
質問
にはどうすればいいのシーケンスで、コードの実行を行うことができますか、少なくともすべてのtickerTextコールが正常に返された後、最後の印刷が機能することを確認してください。
ありがとうございました。
これは私の心を越えましたが、私はたくさんのアイテムを持っていれば練習ではありません、その他の提案はどうですか? –
実際、私の意見ではReactiveXのhttps://github.com/ReactiveX/RxSwiftを使用することをお勧めします。 リクエストをデータストリームに変換し、最後に1つの連結応答を持つようにフラットマップすることができます。明確な例をここに実装する方法があります:https://stackoverflow.com/questions/40919920/proper-usage-of-rxswift-to-chain-requests-flatmap-or-something-else –