以前Chart.jsでグラフを表示する処理をpromiseで処理していく順番で追加の質問です。
ajaxで通信後showData1→showData2と処理してほしいのですがajaxの通信成功時の処理より前にshowData2(flg)が走ってしまいます。
.then()は上から順番に解決していくわけでは無いのでしょうか?
バージョンは
Chart.js Version: 2.7.3
jquery-3.3.1
Bootstrap3
です。
<!-- タブ・メニュー --> <ul class="nav nav-tabs"> <li><a href="#sampleContentA" data-toggle="tab">タブA</a></li> <li class="active"><a href="#sampleContentB" data-toggle="tab">タブB</a></li> </ul> <!-- タブ内容 --> <div class="tab-content"> <div class="tab-pane" id="sampleContentA"> <canvas id="data1"></canvas> </div> <div class="tab-pane active" id="sampleContentB"> <canvas id="data2"></canvas> </div> </div> $(document).ready(() => { let label; let data1; let data2; let flg = false; $.ajax({ //データを取得 }).then( //成功時の処理 function(data) { label= data.label; data1= data.data1; data2= data.data2; let test = flg;//←test = trueになってしまう(ほしいのはfalse) } ).then( showData1 ) .then( showData2(flg)//←ここが最初に実行されてしまう ) let showData1= () =>{ let chart ; return new Promise(() => { chart = new Chart(canvasContext, options);//タブAのcanvasにグラフ表示(詳細省略) resolve(); }); }; let showData2 = (flg) =>{ flg = true; let chart ; return new Promise(() => { chart = new Chart(canvasContext, options);//タブBのcanvasにグラフ表示(詳細省略) resolve(); }); }; };
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。