JavaScript Fetch AbortSignal.timeout()
JavaScript'de istekleri yönetmek için fetch
metodunu kullanıyoruz.
En basit örneğiyle bir GET isteğini şöyle yapabiliriz:
fetch('https://httpbin.org/delay/3')
.then(res => res.json())
.then(res => console.log('res', res))
.catch(err => console.error(err))
fetch bir promise döndürdüğü için veriyi yönetmek için then
, hatayı yönetmek için catch
bloklarını kullanıyoruz
Ancak fetch'in bir eksiği var, o da istek x saniye
den daha uzun sürerse bunu durduracak bir timeout opsiyonu yok.
Neyse ki, yakın zamanda gelen AbortSignal.timeout()
ile bu problemimiz çözüldü.
Örneğin, isteğin 6 saniyeden daha uzun sürdüğü bir senaryoda isteği iptal edip bunu hata olarak yakalamak istersek şöyle yapabiliyoruz:
fetch('https://httpbin.org/delay/3', {
signal: AbortSignal.timeout(6000)
})
.then(res => res.json())
.then(res => console.log('res', res))
.catch(err => console.log(err.name))
Eger hata AbortError
ise bilinki istek zaman aşımına uğramıştır.