Здравствуйте. Можно ли как то синхронизировать вызовы асинхронных запросов в следующем коде и заставить его работать? Запросы естественно должны остаться асинхронными.
(function() {
'use strict';
var api = {
getUID: function(name){
if(!name) {console.log("Необходимо передать имя пользователя");return;}
console.log("Ищем ID пользователя "+name);
//реализация метода
var ID,
xhr = new XMLHttpRequest();
xhr.open("GET", 'https://api.worldoftanks.ru/wot/account/list/?application_id=demo&limit=1&search='+name, true);
xhr.onload = function(){
var resp = JSON.parse(xhr.response);
if(resp.status !== 'ok') {console.log("Ошибка метода getUID, код ответа: "+resp.status);return;}
ID = resp.data[0].account_id;
console.log(ID);
};
xhr.send();
return ID;
},//Возвращает ID пользователя по его никнейму
getUserByID: function(UID){
if(!UID) {console.log("Необходимо передать ID пользователя");return;}
console.log("Ищем статистику пользователя с ID = "+UID);
//реализация метода
var profile,
xhr = new XMLHttpRequest();
xhr.open("GET", 'https://api.worldoftanks.ru/wot/account/info/?application_id=demo&account_id='+UID, true);
xhr.onload = function(){
var resp = JSON.parse(xhr.response);
if(resp.status !== 'ok') {console.log("Ошибка метода getUID, код ответа: "+resp.status);return;}
profile = resp.data[UID];
};
xhr.send();
return profile;
},//Возвращает статистику пользователя по его ID
getUser: function(name){
if(!name) {console.log("Необходимо передать имя пользователя");return;}
console.log("Ищем ID пользователя "+name);
//реализация метода
var profile = this.getUserByID(this.getUID(name));
return profile;
}//Возвращает статистику пользователя по его никнейму
};
// Your code here...
//api.getUID("Xenon_x");
console.log(api.getUserByID("6258348"));//Не возвращает значение из за асинхронности запроса
api.getUser("Grafiiin");// Не работает из за исинхронности запросов
})();