Ответ
Ответ не найден
Ответ 18+ 🔞
А, ну это ж классика, блядь! Смотри, есть у нас в JavaScript такая штука — Promise. Представь себе, блядь, такого работягу-одиночку, который тебе говорит: «Слушай, я щас пойду, хуйню какую-то сделаю, и когда закончу — тебе отзвонюсь. А пока иди, свои дела делай, не стой надо мной, как идиот».
Вот он и есть промис. Создаёшь ты его, сука, вот так:
let promise = new Promise(function(resolve, reject) {
// Тут он как раз свою хуйню делает. Долго, муторно.
// Например, на сервер запрос шлёт.
});
Видишь, передаёшь ему функцию? А в эту функцию он сам, наглец, подсовывает два коллбэка: resolve и reject. Это типа его личные номера телефонов.
resolve(value)— это когда он всё сделал, довольный такой, и звонит тебе: «Всё, брат, готово! Вот тебе результат (value), забирай».reject(error)— а это когда у него всё пошло по пизде. Он звонит и такой: «Ну всё, пиздец, не вышло. Вот ошибка (error), разбирайся».
И вот ты сидишь и ждёшь этого звонка. А чтобы его не пропустить, ты на этот промис вешаешь «наблюдателей» — методы .then() и .catch().
promise
.then(function(result) {
// Сюда попадём, если промис дозвонился через resolve(result)
console.log('Всё охуенно! Результат:', result);
})
.catch(function(error) {
// А сюда — если он набрал reject(error)
console.log('Всё пиздец, ошибка:', error);
});
Красота-то в чём, ёпта? А в том, что твой основной код не тупит, не ждёт, пока этот долбоёб-промис свой запрос выполнит. Он пошёл его, а сам дальше по коду пошёл. А когда промис созреет — он тебя в нужное место вызовет через .then или .catch. Асинхронщина, блядь, мать её!
И ещё прикол: эти методы можно в цепочку собирать, как паровозик. Возвращаешь из .then новый промис — и к нему следующий .then прицепить можно.
doFirstAsyncThing()
.then((result1) => doSecondAsyncThing(result1))
.then((result2) => doThirdAsyncThing(result2))
.then((finalResult) => {
console.log('Финальный результат, наконец-то:', finalResult);
})
.catch((error) => {
// И если на любом этапе пиздец случится — всё упадёт сюда, в один общий catch.
console.log('Где-то по цепочке насрали:', error);
});
Вот и вся магия, не боги горшки обжигают. Сначала мозг выебывается, а потом привыкаешь и понимаешь, что без этой хуйни в современном JS — вообще никуда.