Swift Combine

Mar 24 2023
EDITOR E ASSINANTE Neste artigo, veremos os fundamentos de dois componentes-chave EDITOR E ASSINANTE do framework combinado. A Apple introduziu a estrutura de sistema integrada chamada Combine no ano de 2019.

EDITORAS E ASSINANTES

Neste artigo, veremos os fundamentos de dois componentes-chave PUBLISHER & SUBSCRIBER do combine framework . A Apple introduziu a estrutura de sistema integrada chamada Combine no ano de 2019. A estrutura fornece APIs declarativas para processar dados ao longo do tempo.

Editor

Publisher é um tipo que confirma o Protocol Publisher. Ele pode emitir eventos para um ou mais assinantes.

O protocolo do editor é genérico em dois tipos

  1. Saída → É o tipo de valor de saída que está sendo emitido pelo publicador
  2. Falha → É o tipo de erro que é lançado quando o publicador não consegue emitir valores
  1. O(s) valor(es) de saída
  2. uma conclusão

Um Publisher emitirá os eventos apenas quando estiver sendo inscrito.

Uma função chave do Publicador é receber, que recebe o parâmetro de entrada do assinante para corresponder à saída do editor.

Assinante

O assinante define que tipo de entrada deve receber do editor.

Protocolo de Assinante é genérico em dois tipos

  1. Entrada → É o tipo de valor de entrada que pode ser manipulado pelo assinante
  2. Falha → É o tipo de erro que pode ser tratado pelo assinante ao receber uma falha do editor

Trabalhando com Editor e Assinante

Criando editor

O editor pode ser criado usando qualquer um dos tipos fornecidos pela estrutura de combinação, como Just, Future, PassthroughSubject, CurrentValueSubject etc.

Criando Assinante

O assinante pode ser criado usando os tipos embutidos, como

  1. Afundar
  2. Atribuir

Sink é a maneira mais simples de anexar assinante a um editor

Sink fornece dois fechamentos, um para aceitar e lidar com o valor do editor e o outro para lidar com a conclusão

Atribuir a: )

Atribuir a irá pegar o valor do editor e atribuí-lo a um determinado objeto

Exemplos: demonstrar o funcionamento do editor e do assinante

Seqüência

O Sequence Publisher emitirá uma sequência de valores e, em seguida, chamará a conclusão no final.

Saída:

No exemplo dado, podemos ver que o editor primeiro emite todos os valores em ordem sequencial e finalmente chama o bloco de conclusão

Apenas

O Just Publisher emitirá instantaneamente sua saída para cada assinante exatamente uma vez e depois terminará.

Just Publisher não pode falhar com erro.

Saída:

Conforme mencionado, o Just finaliza o preenchimento logo após o envio do valor atual.

Futuro

O publicador futuro emitirá o valor ou a falha de uma operação assíncrona e, em seguida, terminará. Future fazendo isso com a ajuda do encerramento chamado Promise. Promise terá um parâmetro de resultado que pode ser um valor ou uma falha. Future terminará logo após receber o valor ou falha em Promise.

No exemplo acima, podemos ver que o Future está invocando um fechamento de promessa que inclui o valor.

Saída:

Aqui, “Started Running” é impresso primeiro, porque o assinante está se inscrevendo no editor primeiro, que inicia o trabalho assíncrono. Em seguida, imprime “End” porque a operação assíncrona está em andamento e, finalmente, imprime o valor recebido e a conclusão recebida.

PassthroughAssunto

PassthroughSubject emitirá vários valores e não possui nenhum valor inicial. Ao anexar um assinante, ele pode receber valor do método send (:).

No exemplo acima, podemos ver que PassthroughSubject não possui nenhum valor inicial. Ao enviar valor para o publicador usando o método send (:), resulta em emiti-lo no retorno de chamada do valor recebido do assinante.

Saída:

CurrentValueSubject

CurrentValueSubject emitirá o valor atual e deve ser inicializado com o valor inicial enquanto está sendo criado. Ao anexar um assinante a ele, o publicador pode receber o valor do método send (:) igual ao PassthroughSubject. O valor atual do editor pode ser acessado usando a propriedade value . Same pode ser usado para atribuir um novo valor atual ao publicador.

O exemplo acima mostra que o editor é inicializado com o valor inicial 0. Como PassthroughSubject, também podemos enviar valores para o editor usando o método send (:).

A propriedade value em CurrentValueSubject está sendo usada para obter o valor atual e também para atribuir o valor atual conforme mencionado.

Saída:

Inscrição

O editor assinado pelo assinante é chamado de Assinatura. A assinatura confirma o protocolo “ Cancelável ”.

[Observação: é recomendável cancelar a assinatura quando o assinante não quiser mais receber valor do editor. Ele pode ser cancelado usando o método "cancelar". Se não for chamado explicitamente, ele interromperá a assinatura somente quando o editor concluir]

Saída:

Espero ter abordado alguns princípios básicos que o ajudariam a brincar com o Editor e o Assinante. Feliz aprendizado!

Obrigado :)