Пример 1 - fetch, async/await
async function start() {
const user = await getUser();
console.log(user);
}
function getUser() {
return fetch('https://jsonplaceholder.typicode.com/users/1')
.then(response => response.json());
}
start();
/*
{
id: 1,
name: 'Leanne Graham',
username: 'Bret',
email: 'Sincere@april.biz',
address: {
street: 'Kulas Light',
suite: 'Apt. 556',
city: 'Gwenborough',
zipcode: '92998-3874',
geo: { lat: '-37.3159', lng: '81.1496' }
},
phone: '1-770-736-8031 x56442',
website: 'hildegard.org',
company: {
name: 'Romaguera-Crona',
catchPhrase: 'Multi-layered client-server neural-net',
bs: 'harness real-time e-markets'
}
}
*/
или
Пример 2 - XHR, async/awaitasync function start() {
const user = await getUser();
console.log(user);
}
function getUser() {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/users/1');
xhr.addEventListener('load', () => {
if (xhr.status === 200) {
resolve(JSON.parse(xhr.response));
} else {
reject(xhr.response);
}
});
xhr.send();
});
}
или
Пример 3 - XHR, callbackfunction start() {
getUser(user => {
console.log(user);
});
}
function getUser(callback) {
const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/users/1');
xhr.addEventListener('load', () => {
if (xhr.status === 200) {
callback(JSON.parse(xhr.response));
} else {
callback(xhr.response);
}
});
xhr.send();
}
start();
Для варианта с функцией обратного вызова, чаще всего используют два параметра: первый - ошибку, второй - результат, тогда код будет выглядеть так:
Пример 4 - XHR, callback с обработкой ошибокfunction start() {
getUser((error, user) => {
if (!error) {
console.log(user);
}
});
}
function getUser(callback) {
const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/users/1');
xhr.addEventListener('load', () => {
if (xhr.status === 200) {
callback(null, JSON.parse(xhr.response));
} else {
callback(new Error(xhr.response));
}
});
xhr.send();
}
start();
Также, для XHR надо
дополнительно обрабатывать ошибки.