Limites de tempo e cancelamento com AbortController
Adicione limites de tempo ao código assíncrono e cancele operações com AbortController; conecte sinais às tarefas para interrompê-las mais cedo
Limites de tempo e cancelamento com AbortController é uma aula grátis de JavaScript Academy no CoddyKit. Esta é a aula 2 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de JavaScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de JavaScript Academy inclui 3 aulas no total.
Por que usar tempos limite e cancelamentos?
Objetivo: Interrompa tarefas longas com segurança.
- Adicione um tempo limite simples
- Use AbortController
- Conecte o sinal à sua tarefa
- Limpe os temporizadores

Tarefa ciente do sinal
Crie tarefas que escutem signal.abort e parem o temporizador ao serem canceladas.
// 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);
});

Cancelamento em ação
Crie um controlador, passe o seu sinal e chame abort() para cancelar.
// 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);

Invólucro de tempo limite
Use Promise.race para rejeitar se a tarefa demorar demais; limpe o temporizador em finalmente.
// 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); });

Tempo limite + cancelamento juntos
Se o tempo limite vencer, chame abort() para que o trabalho subjacente pare antecipadamente.
// 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); });

Dicas e lista de verificação
Dicas:
- Sempre limpe os temporizadores em finalmente.
- Passe o sinal para as tarefas e verifique signal.aborted.
- Prefira um controlador por solicitação.

Questionário básico sobre AbortController
Verificação rápida: Padrão de cancelamento.

Recapitulação
Recapitulação: Você criou uma tarefa que reconhece sinais, cancelou-a com AbortController, adicionou um tempo limite por meio de Promise.race e combinou ambos para permitir saídas antecipadas seguras.

Perguntas Frequentes
A aula “Limites de tempo e cancelamento com AbortController” é grátis?
Sim — o texto completo de “Limites de tempo e cancelamento com AbortController” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de JavaScript Academy, atualize para CoddyKit PRO. O curso de JavaScript Academy inclui 3 aulas no total.
O que vou aprender em “Limites de tempo e cancelamento com AbortController”?
Adicione limites de tempo ao código assíncrono e cancele operações com AbortController; conecte sinais às tarefas para interrompê-las mais cedo Você pratica JavaScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar JavaScript Academy?
Nenhuma experiência prévia é necessária. JavaScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 3.
Quanto tempo leva a aula “Limites de tempo e cancelamento com AbortController”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de JavaScript Academy?
Sim. Cada aula de JavaScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Escrevendo funções assíncronas; try/catch; paralelo versus sequencial
- Limites de tempo e cancelamento com AbortController
- Padrões de novas tentativas e espera progressiva