前提・実現したいこと
jQueryで片方の処理の『完了後に』もう片方の処理を実行すること。
発生している問題・エラーメッセージ
発生している問題としては、
「処理Aの『完了後に』処理Bをする」ができず、
「処理Aの『実行後に』処理Bをする」になってしまう点です。
つまり、実行の順番は指定できても、『完了後に』ができないというところに躓いています。
エラーはありません。
該当のソースコード
まず「whenとdone」を試しましたが、『完了後に』はできませんでした。
jQuery
1$(document).ready(function(){ 2 $.when( 3 console.log('処理A'); 4 ).done(function(){ 5 console.log('処理B'); 6 }); 7}); 8
試したこと
続いて試したのが「then」ですが、こちらも『完了後に』はできませんでした。
jQuery
1function execA() { 2 var def = $.Deferred(); 3 console.log('処理A'); 4 def.resolve(); 5 return def.promise(); 6} 7function execB() { 8 var def = $.Deferred(); 9 console.log('処理B'); 10 def.resolve(); 11 return def.promise(); 12} 13$(document).ready(function(){ 14 execA().then(execB); 15});
補足情報(FW/ツールのバージョンなど)
上では「console.log」で出しているためにわかりにくいですが、実際には「autosize」という関数で、テキストエリアの高さを自動調整するものです。
autosize 4.0.2
http://www.jacklmoore.com/autosize/
この計算に時間がかかり計算の前後で高さがカクっとなってしまうために、まず「処理A(autosizeでの高さ計算)」の『完了後に』、「処理B(そのコンテンツを表示する)」という動作を考えているイメージです。
カクっとなる瞬間を隠したいというのが目的になります。
よい方法がございましたら教えてください。
回答2件
あなたの回答
tips
プレビュー