回答編集履歴

2

調整

2019/09/12 01:05

投稿

yambejp
yambejp

スコア114837

test CHANGED
@@ -5,8 +5,6 @@
5
5
  ```javascript
6
6
 
7
7
  <script>
8
-
9
- var timerId;
10
8
 
11
9
  var json=[
12
10
 
@@ -50,7 +48,7 @@
50
48
 
51
49
  /* var c=0;//ゴミでした */
52
50
 
53
- timerId=setInterval(()=>{
51
+ var timerId=setInterval(()=>{ //timerIdはグローバルでなくても良かったので調整
54
52
 
55
53
  if($('#continue').is(':hidden')){
56
54
 

1

解説

2019/09/12 01:05

投稿

yambejp
yambejp

スコア114837

test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
  await new Promise(resolve=>{
50
50
 
51
- var c=0;
51
+ /* var c=0;//ゴミでした */
52
52
 
53
53
  timerId=setInterval(()=>{
54
54
 
@@ -75,3 +75,25 @@
75
75
  <input type="button" value="continue" id="continue">
76
76
 
77
77
  ```
78
+
79
+
80
+
81
+ # 流れの解説
82
+
83
+ - async処理を宣言
84
+
85
+ - jsonからデータをxとして取り出す
86
+
87
+ - xを表示
88
+
89
+ - #continueボタンをxのtypeがchoiceだったとき表示する、そうでないときは非表示
90
+
91
+ - awaitでpromiseを呼び出し
92
+
93
+ - promise内部では1/10秒ごとに#continueボタンの表示状態をチェック
94
+
95
+ - 表示時=ユーザーからの入力待ち=promiseが進行しないので同期する
96
+
97
+ - 非表示時=インターバル処理をとめ(clearInterval),promiseから復帰(resolve)
98
+
99
+ - promiseから戻るとforループが進行しjsonの次のデータをチェック