Перейти к основному содержимому

2 записи с тегом "ES2018"

Посмотреть все теги

`Promise.prototype.finally`

· 2 мин. чтения
Матиас Байненс ([@mathias](https://twitter.com/mathias))

Promise.prototype.finally позволяет зарегистрировать обратный вызов, который вызывается при завершении промиса (то есть при выполнении или отклонении).

Представьте, что вы хотите получить данные, чтобы показать их на странице. Ах да, вы хотите показать индикатор загрузки, когда запрос начинается, и скрыть его, когда запрос завершается. Когда что-то идет не так, вы показываете сообщение об ошибке вместо этого.

const fetchAndDisplay = ({ url, element }) => {
showLoadingSpinner();
fetch(url)
.then((response) => response.text())
.then((text) => {
element.textContent = text;
hideLoadingSpinner();
})
.catch((error) => {
element.textContent = error.message;
hideLoadingSpinner();
});
};

Объектные свойства rest и spread

· 2 мин. чтения
Матиас Биненс ([@mathias](https://twitter.com/mathias))

Прежде чем обсуждать объектные свойства rest и spread, давайте вспомним очень похожую функцию из прошлого.

ES2015: элементы rest и spread для массивов

Хороший старый ECMAScript 2015 ввел элементы rest для деструктурирующего присваивания массивов и элементы spread для литералов массивов.

// Элементы rest для деструктурирующего присваивания массивов:
const primes = [2, 3, 5, 7, 11];
const [first, second, ...rest] = primes;
console.log(first); // 2
console.log(second); // 3
console.log(rest); // [5, 7, 11]

// Элементы spread для литералов массивов:
const primesCopy = [first, second, ...rest];
console.log(primesCopy); // [2, 3, 5, 7, 11]

ES2018: объектные свойства rest и spread 🆕

Что же нового? _пропоузал добавляет возможность использовать свойства rest и spread для литералов объектов.

// Свойства rest для деструктурирующего присваивания объектов:
const person = {
firstName: 'Себастьян',
lastName: 'Маркбåге',
country: 'США',
state: 'Калифорния',
};
const { firstName, lastName, ...rest } = person;
console.log(firstName); // Себастьян
console.log(lastName); // Маркбåге
console.log(rest); // { country: 'США', state: 'Калифорния' }