私のウェブサイトでは、いくつかの変数をロードする必要があるAPIを使用しています。変数のそれぞれは、前の呼び出しの戻り値に依存します(呼び出し1から返された変数を使用して呼び出し2などを行います)。APIへの複数の呼び出しが必要なウェブページへのデータのロード
例: すべてのデータを収集するために5つの異なるAPI呼び出しを作成する必要があり、それぞれが以前の呼び出しの戻り値に依存しているとします。それから私の場合、私はこのようにしています。私はデータをロードする最初の関数にコールバック関数を渡しています。その関数は最初のAPI呼び出しを行います。その呼び出しが終了すると、コールバック関数が2番目のAPI呼び出しを行う次の関数に渡されます。最後のAPI呼び出しが終了すると、コールバック関数が呼び出され、すべてのデータがロードされたことがわかります。あなたは、コールバック関数がに長い道のりを渡されます見ることができるように
function loadData(cb){
//Make the first API call
Trello.get('/member/me/boards', function(boards){
myBoards = boards;
for(var i = 0; i < boards.length; i++){
//Make the second API call
Trello.get('/boards/' + board[i].id + '/lists', function(lists){
board[i].lists = lists;
//Then make the third and fourth and so on
.....
//When all calls are made call the callback function
cb();
});
});
}
:コードでは、この(私は以下の例では、それを使用しますので、私は自分のアプリケーションでTrelloのAPIを使用しています)のようになります。コールスタック。私はデータをロードして格納するためのより良い方法があるかどうか疑問に思っていました(現在はすべてを大規模な配列に格納しています)。また、APIから大量のデータをロードするためのベストプラクティスは何ですか?
P.S.私の元のコードでは、各API呼び出しは別々の関数になっていますが、この例ではコードの量を減らすためにここで簡略化しました。
同期ループ内の非同期呼び出しは、常に悪い考えです。あなたのツリーを再帰的に繰り返すことができます...そして、データをまとめると良いかもしれないので、ユーザーはそれを待つ必要はありませんか? –
データを表示するには、すべてのデータをロードする必要があります。しかし、私はforループで非同期呼び出しを行うことで何を意味するのか理解しています。 – martin36