TGViewer
Будни разработчика Будни разработчика @htmlshit · 14.4K subscribers
Post #4076 1.98K
#статья дня

Висящие промисы как простой способ оборвать async-функцию


await new Promise(() => {})


Зачем так делать?

Отмена через throw ненадёжна — её легко случайно поймать в try/catch, и код поедет дальше.


try {
await handler()
} catch (e) {}


С висящим же промисом выполнение гарантированно останавливается.

Где это используется?

В пошаговых workflow, где функция должна завершиться на середине и продолжиться позже.


async function signup(user) {
await step("create-user", user)

if (!user.emailVerified) {
await new Promise(() => {}) // закончили здесь
}

await step("send-email", user)
}


Оркестратор сохраняет прогресс и потом запускает её заново, пропуская выполненные шаги.

Минусы:
— такой код легко сломать случайно: забытый await или лишний Promise — и функция зависнет навсегда
— трудно дебажить: нет ошибки, нет стека, просто «ничего не происходит»
— не подходит для обычного приложения без оркестратора (сам по себе это тупик)
— может путать других разработчиков: выглядит как баг, а не как намеренное поведение

В общем, это способ явно остановить выполнение без исключений, но он требует дисциплины и инфраструктуры вокруг.

А, ну да. Сама статья: https://www.inngest.com/blog/hanging-promises-for-control-flow

#js #promise #halt
  • 👍 5
  • 🫡 2
More from @htmlshit
  1. Sep 30, 2026Котаны, вам ещё и скидка по промокоду htmlshit, налетайте!
  2. Sep 30, 2026👨‍💻 Фронтенд с AI: что можно делегировать агентам 5 октября, стартует конференция Podlod…
  3. Sep 30, 2026Если хочется немного обновить свою Telegram-ленту, собрали папку RIA — Recommended Iconic…
  4. Sep 30, 2026#фишка дня На macOS пункт меню после клика не исчезает сразу. Сначала выбранный пункт коро…
  5. Sep 29, 2026#инструмент дня Забайтил твиттер этим скриншотом с успехом аж на 55 тысяч просмотров. На с…
  6. Sep 29, 2026#заметка дня Позабытый формат В комментариях к свежему Subversion спор про Git и централиз…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →