
Vendosja e një afati me setTimeout dhe Promise.race nuk e ndal punën që kryhet në sfond. Shembulli në TypeScript tregon se, edhe pasi funksioni raporton tejkalimin e afatit, kërkesa HTTP mund të vazhdojë shkarkimin, duke mbajtur lidhjen hapur dhe duke mbushur një buffer me të dhëna që nuk do të përdoren.
Promise.race përfundon sapo përfundon njëra prej promise-ve, por nuk e anulon fetch. Një variabël që shënon tejkalimin e afatit vetëm pengon përdorimin e rezultatit të vonuar. Për më tepër, nëse kërkesa përfundon e para, një setTimeout i papastruar mund ta mbajë procesin aktiv deri në skadimin e tij.
Zgjidhja e paraqitur është kalimi i AbortSignal.timeout(2_000) te opsioni signal i fetch. Sinjali aktivizohet pas dy sekondash dhe mjedisi i ekzekutimit e ndërpret kërkesën. Kështu, nuk nevojitet pastrim manual i kohëmatësit apo kontroll i një variabli shtesë.
Node.js e shtoi AbortSignal.timeout() në v17.3.0 dhe v16.14.0, ndërsa AbortSignal.any() në v20.3.0 dhe v18.17.0. Sipas MDN, any() është i disponueshëm në shfletues që nga marsi 2024 dhe timeout() që nga prilli 2024; të dy dokumentohen edhe nga Deno dhe Bun. Shembujt përdorin top-level await dhe kërkojnë që package.json të ketë "type": "module".
Burimi: DEV Community (Web Dev Feed) — lexoni artikullin e plotë në anglisht.

