Vapor - tâches asynchrones multiples

Bonjour à tous,

Je n’ai pas de questions, c’est juste un billet d’humeur sur Vapor 4. :slight_smile:
J’ai passé pas mal de temps sur un exemple un peu plus compliqué, et qui imbrique 5 ou 6 tâches asynchrones. Par exemple, récupérer une info de la table1, puis de là aller lire une info dans la table 2 avec des billes de la table 1. Des petits contrôles synchrones, puis on commence une mise à jour de la table 1, puis la table 2, puis la table 3. Bien sûr ces mises à jour ne peuvent pas se faire en parallèle. Et entre chaque étape, on peut avoir des erreurs ou accès complémentaires si il y a eu un accès concurrent. Le tout en mode transaction (bon cette partie est plutôt bien faite) pour faire du tout ou rien dans les mises à jour.

J’aime bien le code simple, modulaire. J’ai toujours eu par exemple horreur des if imbriqués, et alors 5 ou 6 niveaux, je pige pas comment on peut en arriver là.
Et bien avec l’empilement de tâches asynchrones, j’ai tout essayé, je n’y suis pas arrivé. J’ai googlé pas mal, et pour le moment, je peux me tromper, mais y’a pas moyen.
On en a parlé brièvement avec Maxime au dernier coaching, avec le concept async/await, qui sera pour swift 5.5 Et c’est bien pour cela que d’autres languages l’ont, et que swift s’y met.

Si cela vous intéresse, cet article est plutôt bien fait.

Quand à moi pour le moment, je crois que je vais laisser tomber et attendre swift 5.5 avec ou sans Vapor 5.

N’hésitez pas à réagir, et qui sait, peut être allez vous m’y redonner goût :slight_smile: