Привет всем! Уже измучился над вопросом, как передать нужный параметр в обработчик события…
Есть кусочек кода:
let cities;
function getData(method, url, cb) {
const xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.send();
xhr.addEventListener("load", function() {
switch (xhr.status) {
case SUCCESS_CODE:
cities = JSON.parse(xhr.response);
if (cb) {
cb();
}
break;
default:
console.error();
}
});
}
getData(METHOD, PROXY_URL + API_URL, removePopup);
В таком виде она работает прекрасно - с сервера приходит массив, по замыканию берётся переменная cities и в неё этот массив записывается, при этом я использую его дальше и что-то с ним делаю. Проблема в том, что мне эта функция нужна для запроса данных по другим URL, и другие массивы я хочу записывать в другие переменные. Как сделать так, чтобы я мог подставлять не только cities?
На данный момент придумал только 1 вариант, но он не рабочий:
function getData(method, url, arr, cb) {
const xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.send();
xhr.addEventListener("load", function() {
switch (xhr.status) {
case SUCCESS_CODE:
arr = JSON.parse(xhr.response);
if (cb) {
cb();
}
break;
default:
console.error();
}
});
}
getData(METHOD, PROXY_URL + API_URL, cities, removePopup);
Подскажите, пожалуйста, как это сделать.
UPD: попробовал сделать так:
function parseResponse(xhr, cit, cb) {
return function() {
switch (xhr.status) {
case SUCCESS_CODE:
cit = JSON.parse(xhr.response);
if (cb) {
cb();
}
break;
default:
console.error();
}
};
}
function getData(method, url, arr, cb) {
const xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.send();
xhr.addEventListener("load", parseResponse(xhr, arr, cb));
}
getData(METHOD, PROXY_URL + API_URL, cities, removePopup);
Всё равно - не работает.