Zaman Aşımları ve AbortController ile İptal
Eşzamansız koda zaman aşımları ekleyin ve AbortController ile çalışmayı iptal edin; görevleri erken durdurmak için sinyalleri bağlayın.
Zaman Aşımları ve AbortController ile İptal, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 3 dersten oluşur.
Zaman aşımları ve iptaller neden gerekli?
Amaç: Uzun süren görevleri güvenle durdurun.
- Basit bir zaman aşımı ekleme
- AbortController kullanma
- signal değerini görevinize bağlama
- Zamanlayıcıları temizleme

Sinyal farkındalığı olan görev
signal.abort'u dinleyen ve iptal sırasında zamanlayıcıyı durduran görevler oluşturun.
// Fake fetch that respects AbortSignal
function fakeFetch(ms, value, signal) {
return new Promise(function (resolve, reject) {
// Abort handler
function onAbort() {
clearTimeout(t);
reject(new Error("aborted"));
}
// If already aborted
if (signal && signal.aborted) {
return reject(new Error("aborted"));
}
// Finish timer
const t = setTimeout(function () {
if (signal) {
signal.removeEventListener("abort", onAbort);
}
resolve(value);
}, ms);
// Listen for abort
if (signal) {
signal.addEventListener("abort", onAbort);
}
});
}
fakeFetch(5, "OK").then(function (v) {
console.log("fakeFetch:", v);
});

Abort uygulamada
Bir controller oluşturun, signal değerini aktarın ve iptal etmek için abort() çağrısı yapın.
// AbortController cancels signal-aware tasks
const controller = new AbortController();
fakeFetch(20, "Too slow", controller.signal)
.then(function (v) {
console.log("done:", v);
})
.catch(function (e) {
console.log("catch:", e.message);
});
// Abort after a short delay
setTimeout(function () {
controller.abort();
console.log("aborted");
}, 5);

Zaman aşımı sarmalayıcısı
Görev çok uzun sürerse reddetmek için Promise.race kullanın; zamanlayıcıyı finally içinde temizleyin.
// Add a timeout to any Promise with Promise.race
function withTimeout(promise, ms) {
return Promise.race([
promise,
new Promise(function (_resolve, reject) {
const t = setTimeout(function () {
reject(new Error("timeout"));
}, ms);
// Small trick: clear timer when the main promise settles
promise.finally(function () { clearTimeout(t); });
})
]);
}
// Demo: this will time out
withTimeout(fakeFetch(30, "late"), 10)
.then(function (v) { console.log("value:", v); })
.catch(function (e) { console.log("timeout:", e.message); });

Zaman aşımı ve abort birlikte
Zaman aşımı kazanırsa, temel çalışmanın erkenden durması için abort() çağrısı yapın.
// Combine: abort if timeout fires
async function fetchWithTimeout(msWork, msTimeout) {
const c = new AbortController();
const task = fakeFetch(msWork, "data", c.signal);
// If timeout wins, abort the task
try {
const result = await withTimeout(task, msTimeout);
return result;
} catch (e) {
c.abort();
throw e;
}
}
fetchWithTimeout(25, 10)
.then(function (v) { console.log("got:", v); })
.catch(function (e) { console.log("failed:", e.message); });

İpuçları ve kontrol listesi
İpuçları:
- Zamanlayıcıları her zaman finally içinde temizleyin.
- signal değerini görevlere aktarın ve signal.aborted değerini kontrol edin.
- Her istek için bir controller kullanmayı tercih edin.

AbortController temelleri testi
Hızlı kontrol: İptal kalıbı.

Özet
Özet: Sinyali dikkate alan bir görev oluşturdunuz, onu AbortController ile iptal ettiniz, Promise.race aracılığıyla bir zaman aşımı eklediniz ve güvenli erken çıkışlar için ikisini birleştirdiniz.

Sıkça Sorulan Sorular
“Zaman Aşımları ve AbortController ile İptal” dersi ücretsiz mi?
Evet — “Zaman Aşımları ve AbortController ile İptal” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 3 dersten oluşur.
“Zaman Aşımları ve AbortController ile İptal” dersinde ne öğreneceğim?
Eşzamansız koda zaman aşımları ekleyin ve AbortController ile çalışmayı iptal edin; görevleri erken durdurmak için sinyalleri bağlayın. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.
“Zaman Aşımları ve AbortController ile İptal” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- async işlevleri yazma; try/catch; paralel ve sıralı çalışma
- Zaman Aşımları ve AbortController ile İptal
- Yeniden Deneme ve Geri Çekilme Kalıpları