我正在寻找一种方法来发送许多请求到一个API使用不同的API每次。 我的项目的一个示例url为: http://api.bandsintown.com/artists/Hippo%20Campus/events.json?lapi_version=2.0&app_id=music_matcher发送多个HTTP GET请求到一个循环的API
我正在使用HTTP请求将JSON信息拖入我的脚本并完美地工作......第一次。但是,我希望能够在网址中使用不同艺术家名称的循环中将它称为50-100次(最大)(我使用BandsInTown API)。出于某种原因,当我尝试使用一个循环多次调用http请求时,只会出现一个输出,并且不可预知哪个元素按其顺序排列(通常是与阵列中第一个或第二个元素关联的输出)。这是我的代码如下所示:
// HTTP GET call to BandsInTown API
function httpGetAsync(theUrl, callback) { //theURL or a path to file
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
var data = JSON.parse(httpRequest.responseText);
if (callback) {
callback(data);
}
}
else {
alert("error loading JSON doc");
}
};
httpRequest.open('GET', theUrl, true);
httpRequest.send(null);
}
//extracts data from api for each artist
function parseEvent(artist) {
var url = "http://api.bandsintown.com/artists/" + artist + "/events.json?lapi_version=2.0&app_id=music_matcher";
httpGetAsync(url, function(data) {
var numEvents = Object.keys(data).length;
//var events = [];
for (var j = 0; j < numEvents; j++) {
document.write(data[j].venue.name + "-> ");
document.write("LAT:" + data[j].venue.latitude + " " + "LNG:" + data[j].venue.longitude);
document.write("ARTIST: " + data[j].artists[0].name);
document.write("DATE: " + data[j].datetime);
document.write(" " + j + " ");
}
});
}
var artists = ["Drake", "Mac Demarco", "Hippo Campus", "STRFKR"];
for (var i = 0; i < artists.length; i++) {
parseEvent(artists[i]);
document.write(" ---NEXT ARTIST--- ");
}
所以我无法确切说出是怎么回事,但事情怪怪的我目前的代码。我没有很多的JavaScript和Web开发经验,所以任何帮助表示赞赏!我最好寻找一种方法来实现这个纯JavaScript。我很难弄清楚如何处理Eclipse Neon中的Node.js和/或JQuery(我正在使用的IDE)