Как насчет этой версии в обычном ES6 / ES2015?
function get(url) {
return new Promise((resolve, reject) => {
const req = new XMLHttpRequest();
req.open('GET', url);
req.onload = () => req.status === 200 ? resolve(req.response) : reject(Error(req.statusText));
req.onerror = (e) => reject(Error(`Network Error: ${e}`));
req.send();
});
}
Функция возвращает обещание . Вот пример того, как использовать функцию и обрабатывать обещание , которое он возвращает:
get('foo.txt')
.then((data) => {
// Do stuff with data, if foo.txt was successfully loaded.
})
.catch((err) => {
// Do stuff on error...
});
Если вам нужно загрузить json-файл, вы можете использовать JSON.parse()
для преобразования загруженных данных в объект JS.
Вы можете также интегрировать req.responseType='json'
в функцию, но, к сожалению, нет поддержки IE для это , поэтому я бы придерживался JSON.parse()
.