Fondamentalement, ce que je suis après est de savoir comment créer des ressources 1,2,3,4, traiter les résultats, puis disposer de 4,3,2,1 avec l'exigence que s'il y a une erreur de création de ressource 3, nous avons seulement à disposer de 2,1.RxJava 2 disposer des ressources dans l'ordre inverse
À titre d'exemple, disons que nous avons ceci:
Observable1 lit des lignes à partir d'un fichier et une émission par-t ligne. Pour une gestion correcte de la ressource de fichier, le fichier doit être ouvert au début et fermé à la fin. Observable2 doit accepter les émissions de Observable1 et les écrire dans un autre fichier. Par souci de simplicité, disons qu'il suffit d'ajouter une virgule à la fin de chaque ligne. Pour la gestion correcte d'une autre ressource de fichier, nous devons créer le nouveau fichier au début et vider et le fermer à la fin.
Je suppose que cela devrait ressembler à quelque chose comme
observable1.flatMap (line -> { doMagicHere(line+",") })
.subscribe (line -> { System.out.println(line) },
ex -> { ex.printStackTrace() }
)
Si une erreur se produit lors de l'ouverture fichier1, nous ne devons pas créer fichier2 (ni la jeter) Si une erreur se produit lors du traitement des lignes, file2 doit être mis au rebut premier et seulement alors, devrait être classé1. (même si dans cet exemple particulier cela fonctionne dans les deux cas)
Je pense que je peux créer Observable1 avec l'opérateur Observable.using(), où nous ouvrons le fichier dans le premier paramètre, créons l'observable dans le second paramètre et, enfin, disposez (fermez) le fichier dans le paramètre 3d.
Je ne sais pas comment appliquer l'opérateur "using" dans la 2ème étape, ou si c'est la bonne façon de procéder.
Merci pour
Utilisez Observable.using() pour effectuer l'allocation et le nettoyage des ressources. (ou fluide, ou simple ... etc) –