を使用している間、各入力の値のためのgetJSON呼び出しを実行し、私は特定のクラス名を持つ任意の入力をチェックする作業機能を持っている)(.eachの秩序を維持:jQueryの - .getJSON
function getTopFeeds() {
if (jQuery('input.class-name').length > 0) {
jQuery.each(jQuery('input.class-name'),function(){
var feedName = jQuery(this).val();
jQuery.getJSON("https://api.url/"+feedName).success(function(data) {
if (!(data)) {
return;
}
var result = data.results[0];
if (result) {
// Here I create HTML list items to display API data
}
});
});
}
}
それは、動作しますが、非同期であるため、ページの入力順に返されません。データが入力と同じ順序で表示されるように、既存の関数を変更するにはどうすればよいですか?
'.each()'を呼び出すごとにインデックスが付けられます。 1つの可能性は、作成するリクエストの数と同じ長さの配列を作成し、応答が返ってくるたびに、レスポンスをその繰り返しのインデックスのArrayに配置することです。 –
...それから、完了したらすべてを処理するか、「0」で始まる別のカウンタを維持して、新しい項目が配列に追加されるたびに、ヒットするまでカウンタの現在の位置から反復してみてください配列の 'undefined'値です。これにより、すべてのページが完了するまで待つことなく、ページの順序付けられた更新を提供できます。 –