お世話になっております。
あるWEBの仕組みで、起動時にDBから担当者名を取得し、セレクトボックスに表示させています。
localStrageに、前回選択していた担当者名が存在するなら、その値を取得し、セレクトボックスの内容を選択状態にしようと考えています。
最初、何も考えずに①DBから取得→②セレクトボックスへ流し込み→③localStrageに入っているValue値から、対応するセレクトボックスを選択状態に。としていましたが、DBから取得最中に③が走り、期待する動作をしません。
調べている中で、非同期処理にて対応すれば良いことがわかり、async関数を使うことにしました(promiseがいまいち理解出来ていないからなのですが…)。
下のコードを実行すると、コンソールには、1 → Setemper2 → 2 → Setemper1 の順で表示されます。
awaitのあるところで、処理が返るまで待機してくれるものかと思っていたのですが、その様ではなく。
何かいろいろ、考え違い(理解出来ていない)があると思うのですが、1 → Setemper1 → Setemper2 → 2
の順で処理させるにはどの様にすればよいのでしょうか。ご教示お願い致します。
js
1async function hoge() { 2 console.log('1'); 3 await SetEmper(getDept); //担当者セット 4 console.log('2'); 5} 6 7hoge('01211'); 8 9function SetEmper(deptCode) { 10 tempDeptCode = deptCode; 11 $.ajax({ 12 url: 'php/getStdInfo.php', 13 dataType: 'Json', 14 type: 'GET', 15 data: {type: 'deptemp', 16 deptcode: tempDeptCode}, 17 success: function (data) { 18 //現在のリストを削除 19 $('#ddlEmp').children().remove(); 20 $.each(data, function () { 21 $('#ddlEmp').append($('<option>').attr({value: this.EMP_CODE}).text(this.EMP_NAME)); 22 }); 23 console.log('Setemper1'); 24 }, 25 error: function (XMLHttpRequest, textStatus, errorThrown) { 26 console.log(textStatus); 27 return; 28 } 29 30 }); 31 console.log('setemper2'); 32} 33
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/22 14:31