Промисы - Асинхронные Flashcards
Промисы - Асинхронные
В 2017 году в js появились асинхронные функции и давайте посмотрим как новый функционал можно использовать в нашем примере:
const run = async () => {
const yahooData = await fetch(‘https://yahoo.com/?query=js’)
console.log(yahooData)
const bingData = await fetch(‘https://bing.com/?query=js’)
console.log(bingData)
const googleData = await fetch(‘https://google.com/?query=js’)
console.log(googleData)
}
run()
Await в промисе — это ключевое слово, которое используется в асинхронных функциях, чтобы указать, что необходимо дождаться завершения промиса.
Await, указанный перед промисом, запрещает интерпретатору перейти к следующей строчке кода, пока он не выполнится.
При этом остальной код приложения не блокируется и продолжает работать.
async - асинхронные функции, в которых мы можем использовать await (как будто код работает синхронно и движок останавливается, где происходит await)
- всегда возвращает промис и на нее можно будет подписаться
После await, можем подписаться на промис с помощью методов .then, .catch и .finally.
Чаще всего будет встречаться конструкция (используется в синхронном коде)
try {
Если произошла ошибка. то все попадает в catch
Если даже упала ошибка в самом начале, код дальше не сработает и переместиться на ошибку
} catch (error) {
Прописывается ошибка
}
Если нам надо обработать ошибки, то весь асинхронный код мы должны поместить в блок try, а обработку ошибок осуществлять в блоке catch:
const run = async () => {
try {
const yahooData = await fetch(‘https://yahoo.com/?query=js’)
console.log(yahooData)
const bingData = await fetch(‘https://bing.com/?query=js’)
console.log(bingData)
const googleData = await fetch(‘https://google.com/?query=js’)
console.log(googleData)
return googleData
} catch (error) {
console.log(error)
return error
}
}
run()
Если хоть один из запросов зареджектится, то мы не попадем в catch.
Что мы увидим, если увидим такой код?
const result = run()
console.log(result)
Промис, но так неверно записывать, необходимо написать await.
Подписывается на результат и отдает фронтендеру.