TheCodeNaked

Paralelismo - Episódio 27 (Copy)

Episódio 27 - Quando a Ação Gera Outra Ação: o Princípio da Reatividade

Em muitos sistemas, especialmente aqueles que envolvem interação com o usuário ou comunicação com APIs, a execução de uma tarefa frequentemente gera a necessidade de executar outra. Um evento leva a outro, como uma fileira de dominós cuidadosamente posicionados. Este comportamento define o que chamamos de reatividade.

⌚ O problema

Imagine que você baixa um JSON. A estrutura dele exige que, a cada 10 registros, você baixe uma imagem diferente. Mas essas imagens devem ser baixadas após o JSON ser validado. E, depois que a imagem é baixada, é necessário atualizar o banco local.

Tudo isso, claro, mantendo a interface fluida, responsiva e sem travar.

Em um código tradicional, isso facilmente vira um inferno de ifTTask.RunSynchronize e try...except aninhados. É a receita ideal para bugs difíceis de rastrear e comportamentos imprevisíveis.

✅ A solução com TSafeThread e TTaskChain

TTaskChain brilha aqui, pois permite que uma tarefa chame outra naturalmente. Cada etapa tem seu espaço, cada exceção é tratada, e o ciclo de vida está controlado.

TaskChain := TTaskChain.Create(True);
TaskChain.AddTask('Download JSON',
  procedure(...)
  begin
    // Baixa JSON e chama OnTaskSuccess ou OnTaskError
  end);
TaskChain.AddTask('Baixar Imagens do JSON',
  procedure(...)
  begin
    // Para cada 10 registros do JSON, baixa uma imagem
  end);
TaskChain.AddTask('Atualizar Banco de Dados',
  procedure(...)
  begin
    // Insere ou atualiza registros
  end);
TaskChain.Start;

E se houver dependências?

Sem problemas. Cada Task pode armazenar seu resultado em uma variável intermediária compartilhada (ou injetada). O segredo é que cada ação pode passar o bastão para a próxima com clareza.

E o cancelamento?

Todas as etapas respeitam CancelRequested, ou seja, se o usuário quiser parar a cadeia, isso é feito com segurança.

Por que isso é importante?

Porque reatividade estruturada é uma necessidade real no desenvolvimento moderno. O mundo é assíncrono, e o seu código precisa refletir isso com elegância, não com gambiarras.

Com TSafeThread e TTaskChain, você cria aplicações que pensam em cadeia, mas sem aprisionar você em um código encadeado.


No próximo episódio, vamos explorar como reutilizar sequências de tarefas como se fossem componentes, criando pipelines de execução que você pode plugar e reutilizar.

Reatividade é o primeiro passo. Modularidade é o próximo.

Sobre o autor

TheCodeNaked

No TheCodeNaked, programar é consequência, não ponto de partida. Antes do código, vem a dúvida, a análise, o contexto. Não seguimos fórmulas — questionamos. Criar software é pensar com clareza. O resto é só digitação.

TheCodeNaked

Criar com clareza. Codificar com intenção.

TheCodeNaked

Ótimo! Você se inscreveu com sucesso.

Bem-vindo de volta! Você acessou com sucesso.

Você se inscreveu com sucesso o TheCodeNaked.

Sucesso! Verifique seu e-mail para acessar com o link mágico.

As suas informações de faturamento foram atualizadas.

Seu pagamento não foi atualizado