TGViewer
Work & Beer Balance Work & Beer Balance @workbeer · 1.55K subscribers
Post #354 1.07K
Странно, но я почему-то не обнаружил такого готового хука:
 useAsyncEffect(
async (signal, onAbort) => {
}
, [params])

на глаза попадается какая-то дичь

Поэтому написал свою наивную реализацию, критика велком

const isAbortError = (e: unknown) => e && typeof e === 'object' && 'name' in e && e.name === 'AbortError';

const useAsyncEffect = (cb: (signal: AbortSignal, onAbort: (cb: () => void) => void) => Promise<void>, deps?: React.DependencyList) => {
useEffect(() => {
const controller = new AbortController();
(async () => {
try {
const onAbort = (cb: () => void) => {
if (controller.signal.aborted) {
cb();
} else {
controller.signal.addEventListener('abort', cb, { once: true });
}
};
await cb(controller.signal, onAbort);
} catch (e) {
if (!(isAbortError(e))) {
queueMicrotask(() => {throw e});
}
}
})();
return () => controller.abort();
}, deps);
};
Marmelab useAsyncEffect: The Missing React Hook Introducing a new React hook that allows you to run asynchronous side effects in a simple way.
  • ❤ 5
More from @workbeer
  1. Oct 12, 2026Я слышал раньше истории том что топ сениор тимлид разработчик после выгорания ушел из айти…
  2. Oct 11, 2026Недавно я писал про стартап Emergence AI, который запер нейроночки в виртуальном городке "…
  3. Oct 1, 2026Ищу нового хозяина для своего Starlabs Starlight 12.5" Linux планшета (хочу поменять его н…
  4. Sep 29, 2026👨‍💻 Фронтенд с AI: что можно делегировать агентам 5 октября, стартует конференция Podlod…
  5. Sep 29, 2026Ну и если вы пользуетесь продутами Proton - VPN или почтой, то вам будет интересно узнать…
  6. Sep 29, 2026Насколько она умная? В реальном RAG-сервисе ZüriCityGPT на реальном пользовательском трафи…
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 →