ダミーの状況で私の問題を説明しましょう。次のコードを考えてみましょう:
var counter = 0;
function increase(){
if(counter < 10){
counter++;
setTimeout(increase, 100);
}
}
increase()
ここでの考え方は、関数がジョブを終了したらカウンター値を表示することです。これを試してみましょう:
increase();
alert(counter);
おそらくご存知のとおり、機能しません。呼び出しは 10 ではなく 1 を表示します。関数がインクリメントの仕事を完全に終了したらalert()
、値を表示したいと思います。counter
私の問題を解決する簡単な方法はありますか?
[注]increase()
コールバック関数を使用することはオプションではありません。完了後に何かを実行したいということを知り
たくないからです(モジュール化の目的で)。したがって、次のようなことは避けたいと思います。
function increaseForTheKings(f){
if(counter < 10){
counter++;
setTimeout(function(){ increase(f); }, 100);
} else {
f();
}
}