Что делаешь если не нравится идея разработчика на Code Review

Ответ

Ответ не найден

Ответ 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 — вообще никуда.