TGViewer
DEV: Рубиновые тона DEV: Рубиновые тона @dev_in_ruby_colors · 3.28K subscribers
Post #1171 1.87K
Рубрика "заметки на полях". В Node можно довольно легко поставить timeout для запросов через встроенный fetch. Потребуется AbortController. К примеру:

protected async fetchAndHandleResponse(
target: URL,
options: RequestInit,
requestTimeout: number | undefined,
): Promise < ApiResponse > {
const controller = new AbortController();
let timeoutId: NodeJS.Timeout | null = null;

if(requestTimeout && requestTimeout > 0) {
timeoutId = setTimeout(() => controller.abort(), requestTimeout);
}

try {
const response = await fetch(target, {
...options,
signal: controller.signal,
});

// ...
} catch (err) {
if (err instanceof Error) {
if (err.name === "AbortError") {
return Promise.reject(
new ApiError(err.message, 408, { reason: "timeout" }),
);
}
}

// ...
}
}
  • 👍 13
More from @dev_in_ruby_colors
  1. Sep 28, 2026Github буйствует
  2. Sep 26, 2026В этом уроке по абстрактной алгебре говорим про области целостности, делители нуля, характ…
  3. Sep 22, 2026А тем временем сказ о ведьмаке, потерявшем память, уже доступен в виде аудиокниги. Целых 1…
  4. Sep 20, 2026В этом уроке по абстрактной алгебре продолжаем говорить о кольцах: в частности о subrings…
  5. Sep 17, 2026Сделал обзор актуальных библиотек JS для сбора данных, 10 штук бодрых решений на все случа…
  6. Sep 13, 2026В общем, мне тут особо было нечего делать и я подумал создать небольшой скрипт для решения…
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 →