2020年9月16日 : してログ

複数の REST API の呼び出しなどで、すべての通信が終わった後に何か実行したいとき地味に困りますよね。非同期通信なので、終了時のコールバック関数で処理するのですが、他の通信がまだ終わったのをどうやって知るのがベストでしょうか。様々な手があるかと思いますが、今回は記述がシンプルで分かり易い方法を考えてみました。他にもっといい手がある、という方はコメント欄にて教えて下さい。

考案した方法は、必要な処理数を各終了時関数内でカウントダウンしていき、ゼロを引いた時点ですべての完了関数を呼び出すというものです。カウントダウンとゼロ判定、完了関数の呼び出しまで1行で記述しており、可読性も高いと思います。

let standby = 2;

$.getJSON(URL1,function(json){
	allReady();
});

$.getJSON(URL2,function(json){
	allReady(); 
});

function allReady() {
	if (--standby) { return; }
	console.log('All Ready !');
}