私のアプリでは、ユーザが開始日と終了日を入力し、URLがデータを取得します。各URLは、サーバから大きなサイズのJSON
文字列を返します。複数のURLRequestをforループ内で実行してください。前回終了した後に実行してください
問題が発生すると、ユーザーがサーバーをハングするように長い日付間隔を入力すると問題が発生します。アプリのアンドロイド版では、これを行うためにAsyncTask
を使用しました。その中で、ユーザが大きな日付間隔を入力すると、リクエストを複数に分割します。 forループを使用して毎日データを取得し、毎日のタスクが完了した後にonProgressUpdate
に進捗を公開します。
また、私はforループで複数のデータタスクを使用し、結果を公開する必要があります。
for i in 0 ..< dates.count {
// Getting response from server //
let response = getResponse(imei: sImei, date: dates[i])
parseResponse(response)
}
これは私がこれを行う方法です。しかし、これを実装する方法を知らない。
私はDispatchGroup
を使用するいくつかの提案を見ました。私はそれに精通していない。だから私の仕事を達成するために私を案内してください。
注:単一のdataTaskで日付間隔を長くすると、サーバーが停止します。それは、ローエンドのサーバーだからです。だから私は個々の日付のデータをクエリし、それらを結合する必要があります。
この投稿をお読みくださいhttps://stackoverflow.com/questions/42484281/waiting-until-the-task-finishes/42484761#42484761それはあなたを助けるかもしれません。 –
あなたのリクエストは互いに独立していますか? 1つのリクエストの結果を次のリクエストの前に使用しない場合、次のリクエストの結果を送信する前に、それらのリクエストを同時に実行し、リクエストが完了するのを待つのがよいでしょう。 –