質問編集履歴
3
誤解を防ぐ
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
非同期で繰り返し行っているAPI通信を、繰り返している途中でも
|
1
|
+
非同期で繰り返し行っているAPI通信を、繰り返している途中でもキャンセルさせたい
|
test
CHANGED
@@ -86,6 +86,8 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
本当は非同期を止めるか、メソッドの処理を中断などさせたいのですが、ググっても分からず。
|
89
|
+
本当は非同期の通信を止めるか、メソッドの処理を中断などさせたいのですが、ググっても分からず。
|
90
|
+
|
91
|
+
処理のキャンセルはどうやるのが良いのでしょうか。
|
90
92
|
|
91
93
|
よろしくお願いします。
|
2
不足
test
CHANGED
File without changes
|
test
CHANGED
@@ -62,7 +62,7 @@
|
|
62
62
|
|
63
63
|
// API通信開始
|
64
64
|
|
65
|
-
self.getAPIResult(code:code)
|
65
|
+
self.getAPIResult(item:value, code:code)
|
66
66
|
|
67
67
|
dispatchGroup.leave()
|
68
68
|
|
@@ -77,3 +77,15 @@
|
|
77
77
|
|
78
78
|
|
79
79
|
### 試したこと
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
forEachをbreakで抜けようかと思いましたが、出来ないことを知り断念。
|
84
|
+
|
85
|
+
forEachをfor-inで書き直し、フラグで管理しながらif文でbreak記述もしましたが、なぜかbreakしてくれず。
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
本当は非同期を止めるか、メソッドの処理を中断などさせたいのですが、ググっても分からず。
|
90
|
+
|
91
|
+
よろしくお願いします。
|
1
うまく反映されなかった
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,46 +24,56 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
|
27
|
+
//API通信
|
28
28
|
|
29
|
-
|
29
|
+
let queue = DispatchQueue.global(qos: .default)
|
30
30
|
|
31
|
-
|
31
|
+
queue.async {
|
32
32
|
|
33
|
-
|
33
|
+
self.doMultiAsyncProcess(code: tapCode)
|
34
34
|
|
35
|
-
|
35
|
+
}
|
36
36
|
|
37
|
-
|
37
|
+
}
|
38
38
|
|
39
|
-
if Global.MyStoreFlg == false {
|
40
39
|
|
41
|
-
// ツールバー設定 自店舗に戻るボタンの色を戻す
|
42
40
|
|
43
|
-
|
41
|
+
// 非同期でAPI通信を行う
|
44
42
|
|
45
|
-
|
43
|
+
func doMultiAsyncProcess(code: String) {
|
46
44
|
|
47
|
-
|
45
|
+
|
48
46
|
|
49
|
-
|
47
|
+
let dispatchGroup = DispatchGroup()
|
50
48
|
|
49
|
+
let dispatchQueue = DispatchQueue(label: "queue", attributes: .concurrent)
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
// 非同期処理を実行
|
54
|
+
|
55
|
+
list.forEach { (value) in
|
56
|
+
|
57
|
+
dispatchGroup.enter()
|
58
|
+
|
59
|
+
dispatchQueue.async(group: dispatchGroup) {
|
60
|
+
|
61
|
+
Thread.sleep(forTimeInterval: Double.random(in: 1..<2))
|
62
|
+
|
63
|
+
// API通信開始
|
64
|
+
|
65
|
+
self.getAPIResult(code:code)
|
66
|
+
|
67
|
+
dispatchGroup.leave()
|
68
|
+
|
51
|
-
|
69
|
+
}
|
70
|
+
|
71
|
+
}
|
72
|
+
|
73
|
+
}
|
52
74
|
|
53
75
|
```
|
54
76
|
|
55
77
|
|
56
78
|
|
57
79
|
### 試したこと
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
ここに問題に対して試したことを記載してください。
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
### 補足情報(FW/ツールのバージョンなど)
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
ここにより詳細な情報を記載してください。
|