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.