2017-09-28 1 views
0

Tenez compte des variables suivantes:Comment faire une exécution en série sur une variable rxSwift?

let int = Variable<Int>(1) 

let string = Variable<String>("hey!") 

supposons qu'ils sont tous liés à une interface utilisateur déjà, comme:

int.asObservable.bind(to:variable1) 
string.asObservable.bind(to:variable2) 

Comment puis-je faire en sorte que string.asObservable.bind(to:variable2) est exécutée uniquement après int.asObservable.bind(to:variable1) a été réalisé?

+0

Etes-vous sûr par la conception que les 2 valeurs seront mises à jour à chaque fois? – CZ54

+0

@ CZ54 que voulez-vous dire? – progammingBeignner

+0

chaque changement d'int sera suivi d'un changement de chaîne? – CZ54

Répondre

0

Vos int et string sont deux différents variables. Cela signifie que chaque variable peut être modifiée indépendamment.

Vous pouvez les rejoindre pour être sûr que ces valeurs sont modifiées en même temps et retarder la 2ème liaison de la façon suivante:

let values = Variable<(int: Int, string: String)>((1, "hey!")) 
values 
    .asObservable() 
    .map({ $0.int }) 
    .bind(to: variable1) 
values 
    .asObservable() 
    .map({ $0.string }) 
    .delay(0.1, scheduler: MainScheduler.instance) 
    .bind(to: variable2)