Проблемы с распараллеливанием.
С сервера получаю информацию о погоде. Естественно все это выполняется в функции, и так как мне бы хотелось сохранить получаемый запрос, то логично его передать через 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; } }) } |
У функции query нет ни одного оператора 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; } }) } |
Neor,
строка 5 и 23 бесполезны, всё что нужно сделать с данными делайте в строке 20. |
Благодарю за помощь.
|
Часовой пояс GMT +3, время: 01:43. |