VUEでボタンを押した時に発動する「createEmptyDataListメソッド」で非同期処理をしたいです。
下記がcreateEmptyDataListメソッドのコードになります。
Javascript
1createEmptyDataList(){ 2 if(this.dataList.length == 0){ 3 for(let n=0;n<9;n++){ 4 if(n=0){ 5 this.emptyDataList.DeviceName = 'hogehoge1'; 6 this.emptyDataList.ConnectFlg = '-'; 7 this.emptyDataList.CustID = this.strCustID; 8 this.emptyDataList.CustName = this.strCustNM; 9 } 10 if(n=1){ 11 this.emptyDataList.DeviceName = 'hogehoge2'; 12 this.emptyDataList.ConnectFlg = '-'; 13 this.emptyDataList.CustID = this.strCustID; 14 this.emptyDataList.CustName = this.strCustNM; 15 } 16 if(n=2){ 17 this.emptyDataList.DeviceName = 'hogehoge3'; 18 this.emptyDataList.ConnectFlg = '-'; 19 this.emptyDataList.CustID = this.strCustID; 20 this.emptyDataList.CustName = this.strCustNM; 21 } 22 if(n=3){ 23 this.emptyDataList.DeviceName = 'hogehoge4'; 24 this.emptyDataList.ConnectFlg = '無'; 25 this.emptyDataList.CustID = this.strCustID; 26 this.emptyDataList.CustName = this.strCustNM; 27 } 28 if(n=4){ 29 this.emptyDataList.DeviceName = 'hogehoge5'; 30 this.emptyDataList.ConnectFlg = '無'; 31 this.emptyDataList.CustID = this.strCustID; 32 this.emptyDataList.CustName = this.strCustNM; 33 } 34 if(n=5){ 35 this.emptyDataList.DeviceName = 'hogehoge6'; 36 this.emptyDataList.ConnectFlg = '無'; 37 this.emptyDataList.CustID = this.strCustID; 38 this.emptyDataList.CustName = this.strCustNM; 39 } 40 if(n=6){ 41 this.emptyDataList.DeviceName = 'hogehoge7'; 42 this.emptyDataList.ConnectFlg = '無'; 43 this.emptyDataList.CustID = this.strCustID; 44 this.emptyDataList.CustName = this.strCustNM; 45 } 46 if(n=7){ 47 this.emptyDataList.DeviceName = 'hogehogeGPS'; 48 this.emptyDataList.ConnectFlg = '無'; 49 this.emptyDataList.CustID = this.strCustID; 50 this.emptyDataList.CustName = this.strCustNM; 51 } 52 if(n=8){ 53 this.emptyDataList.DeviceName = 'hogehogeBAC'; 54 this.emptyDataList.ConnectFlg = '無'; 55 this.emptyDataList.CustID = this.strCustID; 56 this.emptyDataList.CustName = this.strCustNM; 57 } 58 this.saveData(this.emptyDataList); 59 60 } 61 location.reload(); 62 } 63 },
saveDataメソッドにはpostを使った非同期な処理が書かれています。
このコードはforで回して何度もsaveDataメソッドを実行するので実行中のsaveDataメソッドの通信を待たずに新たなsaveDataメソッドを実行してしまいます。
そのため最後のsaveDataメソッドしか通信が成功しません。
一つ一つのsaveDataメソッドの通信を待機させるようにするにはどうすれば良いでしょうか?
自分なりに非同期処理については調べたのですがいくつも方法がある上に記述の仕方についても不明点が多くて分かりませんでした。
ご教授よろしくお願い致します。
1. どのような結果を期待して、実際にはどのような結果になったのかを具体的に書いてください。なにをもって最後のsaveDataメソッドしか通信が成功しないと判断したのですか?
2. saveDataメソッドの内容を書いてください。saveDataメソッド側を変えなければ非同期処理が終わるのを待つのは不可能な場合もあります。
回答1件
あなたの回答
tips
プレビュー