Проблемы с распараллеливанием.
С сервера получаю информацию о погоде. Естественно все это выполняется в функции, и так как мне бы хотелось сохранить получаемый запрос, то логично его передать через 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, время: 23:32. |