前提・実現したいこと
javascriptで同期処理をしたい。
今記述している内容でうまくいくと思ったのですが、違うようで意図する結果になりません。
今作っているページで、javascript部分が肥大化して来ていて、見た目の順番通りに進行しなくなってきました。
「.then」と「new Promise」で解決しようとしているのですけれど、うまくいきません。
アドバイスをください。よろしくお願いします。
発生している問題
現状は、先にいくつか「ここまでは来てる 021」が表示されたあと、「ここまでは来てる 070」が表示されて、
以降の再帰で「ここまでは来てる 021」が表示されている。
だが、再帰が全て終了したあとで、「ここまでは来てる 070」に行きたい。
該当のソースコード
javascript
1 function displayList(){ 2 return new Promise(function(resolve,reject){ 3 alert('ここまでは来てる 070'); 4//省略 5 resolve(); 6 }); 7 } 8 9 function recursionProc(){ 10 alert('ここまでは来てる 021'); 11//省略...一定の条件下で再帰させている 12 setTimeout(recursionProc, 100); 13 return; 14//省略 15 } 16 17 function progressProc(){ 18 return new Promise(function(resolve,reject){ 19//省略 20 recursionProc(); 21//省略 22 resolve(); 23 }); 24 } 25 26//省略 27 progressProc() 28 .then(displayList); 29//省略
試したこと
ググって、色々試行錯誤をして、この記述に行き着きました。
「function recursionProc(){}」も「new Promise」にしてみましたが、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
サーバー:ロリポップ
ブラウザ:FireFox 91.0.2 (64 ビット)
クライアント:macOS Mojave 10.14.6
回答2件
あなたの回答
tips
プレビュー