Показать сообщение отдельно
  #1 (permalink)  
Старый 13.09.2017, 12:31
Новичок на форуме
Отправить личное сообщение для Xenon_x Посмотреть профиль Найти все сообщения от Xenon_x
 
Регистрация: 13.09.2017
Сообщений: 5

Асинхронные запросы
Здравствуйте. Можно ли как то синхронизировать вызовы асинхронных запросов в следующем коде и заставить его работать? Запросы естественно должны остаться асинхронными.
(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");// Не работает из за исинхронности запросов
})();
Ответить с цитированием