Советую изучить раздел о
Промисах, промисификация последней главой. Промисы нужны чтобы писать асинхронный код, вот даже пример:
Пример 1
function get(url, callback) {
const request = new XMLHttpRequest();
request.addEventListener('load', function (event) {
try {
const data = JSON.parse(request.response);
callback(data);
} catch (error) {
callback(request.response);
}
});
request.open('GET', url);
request.send();
}
get('https://jsonplaceholder.typicode.com/todos', function (data) {
console.log(data);
});
А теперь представьте, что вам надо загрузить несколько таких JSON'ок, и после загрузки всех, что-то сделать:
get('URL_1', function (data_1) {
get('URL_2', function (data_2) {
get('URL_3', function (data_3) {
// do something
});
});
});
Неудобно, не правда ли? Но если перевести этот код в Промисы, становится намного проще
Пример 2
function get(url) {
return new Promise(function (resolve, reject) {
const request = new XMLHttpRequest();
request.addEventListener('load', function (event) {
try {
const data = JSON.parse(request.response);
resolve(data);
} catch (error) {
resolve(request.response);
}
});
request.addEventListener('error', function (event) {
reject({
status: request.status,
text: request.statusText
});
});
request.open('GET', url);
request.send();
});
}
Promise.all([
get('URL_1'),
get('URL_2'),
get('URL_3')
]).then(function ([data_1, data_2, data_3]) {
// do something
});
Промсификация призвана упростить перевод
callback
-функций в их
promise
вариант.