java - 发送10个网络请求,然后再接收到所有回应之后执行后续操作,如何实现?
天蓬老师
天蓬老师 2017-04-17 16:15:12
0
21
1629

我想到的

for iOS
1.用dispatch_group实现
2.用RunLoop实现   

还有没有其他的比较好的实现方式,求关于并发编程的文章.

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(21)
伊谢尔伦

では、ネットワークリクエストはすべて非同期ですが、同じ方法で処理されるのでしょうか?

いいねを押す +0
迷茫

ブロックまたはクロージャを作成します。ネットワーク リクエストを送信し、completionHandler で自身を呼び出して次のリクエストを送信します。

いいねを押す +0
迷茫

Android は間違いなく RxJava、iOS は RxSwift ですか?

いいねを押す +0
Ty80

dispatch_group_t group =dispatch_group_create();
dispatch_group_enter(group);
[リクエスト 1 完了:^(BOOL 成功、ID 応答){

リーリー

}];

dispatch_group_enter(group);
[リクエスト 2 が完了しました:^(BOOL 成功、ID 応答){

リーリー

}];

dispatch_group_enter(group);
[リクエスト 3 完了:^(BOOL 成功、ID 応答){

リーリー

}];

dispatch_group_enter(group);
[リクエスト 4 完了:^(BOOL 成功、ID 応答){

リーリー

}];
.
.
.
.

dispatch_group_notify(group,dispatch_get_main_queue(), ^{

リーリー

});

いいねを押す +0
黄舟

GCD は常に C/C++ コードに使用できるため、GCD を使用する方が良いと思います

いいねを押す +0
小葫芦

AFNetworkingをご利用の方はAFURLConnectionOperation batchOfRequestOperations: progressBlock:completionBlock:

もご利用いただけます
いいねを押す +0
伊谢尔伦

GCD のグループを使用する

いいねを押す +0
左手右手慢动作

Android の RxJava を使用して簡単に実装できます。
もちろん、スレッド同期補助クラス CountDownLatch の実装を試すこともできます。CountDownLatch の使用方法については、次のブログを参照してください:
http://www.liuling123.com/2013/08/countdownlatch -demo.html

いいねを押す +0
Ty80

このような問題に直面したとき、私は通常、リソース変数を設定し、リソースを 10 に初期化し、スレッドを実行してリソースの数を監視します。リソースが完了するたびに、同時タスクが開始され、リソースが 0 になると、リスニング スレッドが停止され、後続の操作が完了します。

これは愚かな考えです。結局のところ、ほとんどの言語はこの方法で実装できます。

いいねを押す +0
Peter_Zhu

Java 独自の同時実行フレームワークは、あなたが言及した将来の問題の解決をサポートします

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート