Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.11.2018, 01:07
Аватар для Neor
Новичок на форуме
Отправить личное сообщение для Neor Посмотреть профиль Найти все сообщения от Neor
 
Регистрация: 12.11.2017
Сообщений: 8

Проблемы с распараллеливанием.
С сервера получаю информацию о погоде. Естественно все это выполняется в функции, и так как мне бы хотелось сохранить получаемый запрос, то логично его передать через return, но переменная не получает это значение.

cityName.addEventListener('keypress', function(e) {
  if (e.keyCode == ENTER_KEY_CODE) {
    var url = creatingUrl(cityName);
    weather = query(url);
    console.log(weather); //undefined
  }
});

function query(theUrl) {
  xhr.open('GET', theUrl);
  xhr.send();
  xhr.addEventListener('readystatechange', function() {
    if (xhr.readyState != xhr.DONE) {
      return;
    }
    if (xhr.status != 200) {
      console.log('Error? Error!');
    } else {
      var serverAnswer = JSON.parse(xhr.responseText);
      console.log(serverAnswer);
      OtherWeatherData.style.display = 'block';
      requestAccepted(serverAnswer);
      // return serverAnswer;
      return 17;
    }
  })
}
Ответить с цитированием
  #2 (permalink)  
Старый 15.11.2018, 08:13
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,134

У функции query нет ни одного оператора return по этому она ничего не возвращает.
Ответить с цитированием
  #3 (permalink)  
Старый 15.11.2018, 11:51
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

А обработчику события некуда возвращать значение.
Ответить с цитированием
  #4 (permalink)  
Старый 15.11.2018, 13:18
Аватар для Neor
Новичок на форуме
Отправить личное сообщение для Neor Посмотреть профиль Найти все сообщения от Neor
 
Регистрация: 12.11.2017
Сообщений: 8

А вот так?
cityName.addEventListener('keypress', function(e) {
  if (e.keyCode == ENTER_KEY_CODE) {
    var url = creatingUrl(cityName);
    weather = query(url);
    console.log(weather); //undefined
  }
});

function query(theUrl) {
  xhr.open('GET', theUrl);
  xhr.send();
  xhr.addEventListener('readystatechange', function() {
    if (xhr.readyState != xhr.DONE) {
      return;
    }
    if (xhr.status != 200) {
      console.log('Error? Error!');
    } else {
      var serverAnswer = JSON.parse(xhr.responseText);
      console.log(serverAnswer);
      OtherWeatherData.style.display = 'block';
      requestAccepted(serverAnswer);
      return serverAnswer;
    }
  })
}
Ответить с цитированием
  #5 (permalink)  
Старый 15.11.2018, 13:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Neor,
строка 5 и 23 бесполезны, всё что нужно сделать с данными делайте в строке 20.
Ответить с цитированием
  #6 (permalink)  
Старый 19.11.2018, 15:21
Аватар для Neor
Новичок на форуме
Отправить личное сообщение для Neor Посмотреть профиль Найти все сообщения от Neor
 
Регистрация: 12.11.2017
Сообщений: 8

Благодарю за помощь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы со слайдером. Shupamen Работа 1 15.12.2013 00:12
проблемы с PagingToolbar serg3091 ExtJS 4 26.06.2013 09:33
Проблемы при установке модулей node.js tadjik1 AJAX и COMET 1 18.03.2012 02:20
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47