2017-04-25 92 views
3

我有三個API網址,每個網址都有相同的對象名稱,我希望同時調用所有API。調用多個API網址並同時呼叫

我的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(first),$ .getJSON(second),$ .getJSON(third)])。then(function(values){// do something}) ' – funcoding

回答

0

API調用是異步的,並且他們你寫他們你的代碼中的順序執行。執行並不重要,因爲'then'可以在執行時以不同的順序調用。

如果您想對執行所有三項服務做任何事情,我會推薦使用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 
     } 
    }) 
    // ... 
});