javascript初心者です。
現在作成しているもので、関数から得た情報を変数に入れて次に進む動作を行いたいと思っています。
しかし、実際に稼働させたところ関数が終了する前に動作が先に行ってしまい、実行結果を受け取れないまま変数の中身がundefindedとなってしまっております。
行いたいことは以下です。
・関数を実行し、値を取得
・その値を持って次に進む
現在確認したこと
・下のfunc1、func2自体はうまくワークしている
・alertを用いて検証した結果、関数(func2)の開始→if文の次の動作が始まってしまう→func2が終了の時間となってしまっており、その分下のresultが取得できずundefindedとなっている
調べるとjavascriptは同期接続が通常で非同期接続をする場合は様々な説明があったのですが同期接続を行う方法を知りたいです。
どうかご教示願います。(尚足りない情報などございましたらコメントいただけましたら幸いです)
・追記
具体的なコードの内容としては、「祝日華道家の判断」となります。
func2で祝日かどうかを判断、その結果を利用して次に進みたいと思っておりました。
func2について
func2では内閣府のが出している近年の祝日をリストアップしたcsvファイルを利用して、指定した日が祝日かどうかを判断する(trueかfalseで結果をだす)というものを作成しております。
データ自体は取れております(指定した日付が祝日かどうか)がその結果をfunc1のif文が取得する前に次に進んでしまっていることもわかっております。
コード
javascript
1 2function func1(){ 3 if(func2("具体的な日付")){ 4//行いたい動作 5} 6 7 //以下からこのfunc2から得た情報を利用して行きたいです 8} 9 10function func2(date) { 11 var req = new XMLHttpRequest(); 12 req.open('get', 'syukujitsu.csv', true); 13 req.send(null); 14 req.onload = function() { 15 //alert(req.responseText) 16 var dataArr = []; 17 var tmp = req.responseText.split('\n'); 18 //alert("-"+date+"-") 19 //alert("-"+tmp[958].split(",")[0].trim()+"-") 20 var result= false 21 for(var i=0; i<tmp.length; i++){ 22 23 if(tmp[i].split(",")[0].trim()===date){ 24 result = true; 25 break 26 } 27 } 28 29 return result 30 } 31 } 32