Introdução ao PromiseKit para iOS.

Luna Abreu
Comunidade XP
3 min readSep 6, 2021

--

PromiseKit é uma biblioteca que facilita a programação assíncrona, auxiliando na elaboração do código em forma de pipeline (chain), definindo prioridade e a ordem em que as funções serão executadas.

Por que usar o PromiseKit?

Lidar com programação assíncrona pode ser algo bem trabalhoso e tratar seus erros mais ainda. Uma Promise oferece uma forma de programar mais simples e de fácil entendimento. Isso acontece porque essa abordagem nos permite escrever uma sequência de funções assíncronas em uma estrutura síncrona, onde uma função só é iniciada depois da conclusão da anterior, criando uma aparência de pipeline, que evita a propagação de erros e melhora a capacidade de debugar as tarefas destas funções. Devido a sua sintaxe, o uso de Promises pode tornar um conjunto de códigos assíncronos muito mais fácil de escrever, ler e compreender.

E por que começamos a usar na Rico?

Conforme fomos evoluindo no fluxo de autenticação do App, chegamos em um ponto que dependíamos de vários endpoints simultaneamente. O PromiseKit nos dá a oportunidade de fazer todas essas chamadas enquanto aguardamos a resposta e validamos seus resultados de uma só vez. Outra razão para escolhermos usar na Rico é pelo PromiseKit dar suporte a versões mais antigas do iOS.

Implementação:

  • Criar uma função que retorne uma Promise:
  • Implementar as chamadas fulfill e reject:

O seal lida com os casos de sucesso e erro da função, o fulfill prossegue para o próximo passo e o reject interrompe a execução da Promise.

  • Implementar a estrutura da Promise chain:

Exemplo num cenário real:

Digamos que, para pegar os dados do perfil de investidor de um usuário, precisamos primeiro identificar se esse usuário existe. Em caso afirmativo, verificamos alguns dados básicos dele, como nome completo e número da conta. Por fim, fazemos a requisição para pegar o seu perfil de investidor e devolvê-lo na tela para o usuário. Se algo nesse meio tempo der errado, consideramos todo o processo como uma falha e informamos um erro ao usuário.

Fazendo isso da maneira convencional, teríamos algo semelhante a isso:

Isso, claro, nos remete ao famoso callback hell. Caso seja necessário incluir uma requisição no meio deste fluxo, a manutenção se torna cada vez mais complexa e com tendência a bugs no tratamento de determinada resposta e/ou erro.

Agora com o que vimos anteriormente do PromiseKit, podemos agrupar essas requisições e tratá-las de uma forma mais legível:

Conclusão

Programação assíncrona pode se tornar complexa quando é necessário fazer várias operações em sequência, deixando o código confuso e com grande dificuldade de realizar manutenção. Neste sentido, o PromiseKit tem uma sintaxe concisa que torna o código claro, como se ele fosse síncrono. O caso de uso mostrado neste artigo é o mais comum, porém o PromiseKit é uma ferramenta capaz de solucionar problemas mais complexos.

Para mais informações sobre o PromiseKit, visite a documentação no GitHub. Também há um vídeo introdutório no Youtube e outro artigo do Medium que foi usado como referência para escrever este artigo.

--

--