回答編集履歴

1

補足

2018/12/17 13:16

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  これはもともと`GetAllControlValue`が何もしてないからです。
8
8
 
9
- 返り値を作って返さないと(もしくはグローバルなarrSendDataにpushしていってもいいですが);
9
+ 返り値を作って返さないと(もしくはグローバルなarrSendDataにpushしていってもいいですが)、arrSendDataが自動で埋まってくれたりはしません。
10
10
 
11
11
  ```javascript
12
12
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  // HTMLのコントロールの値を配列に格納
16
16
 
17
- function GetAllControlValue(TXT_ID) //グローバルなTXT_IDをもらって嬉しいのか微妙
17
+ function GetAllControlValue(TXT_ID)
18
18
 
19
19
  {
20
20
 
@@ -28,11 +28,13 @@
28
28
 
29
29
  // ここセンスない。Valueがnullならと書き換えたい。
30
30
 
31
- if(document.getElementById(TXT_ID[i]).value == "")
31
+ // if(document.getElementById(TXT_ID[i]).value == "")
32
+
33
+ if(document.getElementById(TXT_ID[i]).value) //またはif(document.getElementById(TXT_ID[i]).value === "")
32
34
 
33
35
  {
34
36
 
35
- OutputErrorMessage(ERR_CODE.CONTROL_EMPTY); // このエラーの出し方では何の項目がエラーか分かりません。またbreakするとか、エラーだったら送信できないとか手当が必要と思われる
37
+ OutputErrorMessage(ERR_CODE.CONTROL_EMPTY); // このエラーの出し方では何の項目がエラーか分かりません。またbreakするとか、エラーだったら送信できないとか手当が必要と思います
36
38
 
37
39
  }
38
40
 
@@ -63,3 +65,5 @@
63
65
  google.runで非同期にコールされた関数はいつ戻ってくるか保証がありません。その間btnAddSession_Clickはどんどん、次の行、次の行と処理を進めていきます。したがってフラグが埋まるころには、フラグを利用して止まるはずの処理が走り終わっています(google.runは非常に遅いため)。
64
66
 
65
67
  そうではなくて`CallGas_AccountCheck`のelse(retがfalseでないとき)で、次のgoogle.runをなげてシナリオチェックをし、そのコールバックである`CallGas_SenarioNameCheck`のelse(retがfalseでないとき)に、AddSessionを実行する、というように、非同期のコールバックが次の非同期のコールバックを呼ぶように関数を連鎖させるように組んでいく必要があります(カードゲームで例えると、呪文をスタックに積んで順次解決する感じですかね)。
68
+
69
+ (補足)コールバックの連鎖って書きましたが、たぶんUXはすごく悪いので(google.runは遅い)、必要な引数は全部まとめてgasになげて、サーバからの戻りは1回のほうが、ユーザの待ちは短くてすむと思う(返り値を{IsSuccess:true/false, ErrorMessages:"Error.Code.Something", Result:""}みたいな形式で返す。