2017-04-25 30 views
3

私は3つのAPI URLを持っていますが、それぞれが同じオブジェクト名を持っています。私は同時にすべてのAPIを呼びたいと思います。複数のAPI URLを呼び出して同時に呼び出します

私のjsが、これまで:

$(document).ready(function() { 

    var first = 'https:first'; 
    var second = 'https://second'; 
    var third = 'https://third'; 

    $('#get-data').click(function() { 
     var showData = $('#show-data'); 
     $.getJSON(first,second,third function(data) { 
      showData.empty(); 
      var items = data.map(function(elem) { 
       return $("<li />", { 
       text: elem.title 
      }); 
     }); 

     var list = $('<ul />').append(items); 
      showData.append(list); 
     }); 
    }); 
}); 
+0

'Promise.all'を見てください! – funcoding

+0

これをよく見ていただきありがとうございます – Beep

+0

問題ありません。あなたのケースは、 'Promise.all([$ .getJSON($)、$ .getJSON(second)、$ .getJSON(third)]) ' – funcoding

答えて

0

API呼び出しは非同期である、と彼らはあなたのコード内でそれらを書く順序で実行されます。実行はそれが実行されたときとは異なる順序で呼び出すことができるので、実際には問題ではありません。

すべての3つのサービスの実行に何かしたい場合は、async.jsを使用することをお勧めします。次の例を見てください:

links = ['http://first','http://second','http://third'] 
data = []; 

$('#get-data').click(function() { 
    // ... 
    async.each(links, function(link,callback){ 
     $.getJSON(link, function(res){ 
      data.push(res); 
      callback(); 
     }) 
    }, function(err){ 
     if(!err){ 
      // your code goes here 
      // data[0] contains data from link 1 
      // data[1] contains data from link 1 
      // data[2] contains data from link 2 
     } 
    }) 
    // ... 
}); 
関連する問題