質問編集履歴
3
誤解を防ぐ
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
非同期で繰り返し行っているAPI通信を、繰り返している途中でも
|
1
|
+
非同期で繰り返し行っているAPI通信を、繰り返している途中でもキャンセルさせたい
|
body
CHANGED
@@ -42,5 +42,6 @@
|
|
42
42
|
forEachをbreakで抜けようかと思いましたが、出来ないことを知り断念。
|
43
43
|
forEachをfor-inで書き直し、フラグで管理しながらif文でbreak記述もしましたが、なぜかbreakしてくれず。
|
44
44
|
|
45
|
-
本当は非同期を止めるか、メソッドの処理を中断などさせたいのですが、ググっても分からず。
|
45
|
+
本当は非同期の通信を止めるか、メソッドの処理を中断などさせたいのですが、ググっても分からず。
|
46
|
+
処理のキャンセルはどうやるのが良いのでしょうか。
|
46
47
|
よろしくお願いします。
|
2
不足
title
CHANGED
File without changes
|
body
CHANGED
@@ -30,11 +30,17 @@
|
|
30
30
|
dispatchQueue.async(group: dispatchGroup) {
|
31
31
|
Thread.sleep(forTimeInterval: Double.random(in: 1..<2))
|
32
32
|
// API通信開始
|
33
|
-
self.getAPIResult(code:code)
|
33
|
+
self.getAPIResult(item:value, code:code)
|
34
34
|
dispatchGroup.leave()
|
35
35
|
}
|
36
36
|
}
|
37
37
|
}
|
38
38
|
```
|
39
39
|
|
40
|
-
### 試したこと
|
40
|
+
### 試したこと
|
41
|
+
|
42
|
+
forEachをbreakで抜けようかと思いましたが、出来ないことを知り断念。
|
43
|
+
forEachをfor-inで書き直し、フラグで管理しながらif文でbreak記述もしましたが、なぜかbreakしてくれず。
|
44
|
+
|
45
|
+
本当は非同期を止めるか、メソッドの処理を中断などさせたいのですが、ググっても分からず。
|
46
|
+
よろしくお願いします。
|
1
うまく反映されなかった
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,25 +11,30 @@
|
|
11
11
|
// セルタップしたとき
|
12
12
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
13
13
|
|
14
|
-
|
14
|
+
//API通信
|
15
|
-
|
15
|
+
let queue = DispatchQueue.global(qos: .default)
|
16
|
-
|
16
|
+
queue.async {
|
17
|
-
|
17
|
+
self.doMultiAsyncProcess(code: tapCode)
|
18
|
-
DispatchQueue.main.async {
|
19
|
-
///通信完了後
|
20
|
-
if Global.MyStoreFlg == false {
|
21
|
-
// ツールバー設定 自店舗に戻るボタンの色を戻す
|
22
|
-
self.back.tintColor = .none
|
23
|
-
|
18
|
+
}
|
24
|
-
|
19
|
+
}
|
20
|
+
|
21
|
+
// 非同期でAPI通信を行う
|
22
|
+
func doMultiAsyncProcess(code: String) {
|
23
|
+
|
24
|
+
let dispatchGroup = DispatchGroup()
|
25
|
+
let dispatchQueue = DispatchQueue(label: "queue", attributes: .concurrent)
|
26
|
+
|
27
|
+
// 非同期処理を実行
|
28
|
+
list.forEach { (value) in
|
29
|
+
dispatchGroup.enter()
|
30
|
+
dispatchQueue.async(group: dispatchGroup) {
|
31
|
+
Thread.sleep(forTimeInterval: Double.random(in: 1..<2))
|
32
|
+
// API通信開始
|
33
|
+
self.getAPIResult(code:code)
|
34
|
+
dispatchGroup.leave()
|
25
|
-
|
35
|
+
}
|
26
|
-
|
36
|
+
}
|
37
|
+
}
|
27
38
|
```
|
28
39
|
|
29
|
-
### 試したこと
|
40
|
+
### 試したこと
|
30
|
-
|
31
|
-
ここに問題に対して試したことを記載してください。
|
32
|
-
|
33
|
-
### 補足情報(FW/ツールのバージョンなど)
|
34
|
-
|
35
|
-
ここにより詳細な情報を記載してください。
|