Reactivecocoa: Pourquoi les signaux d'exécution de RACCommand ne se terminent-ils pas?

Créé le 3 févr. 2015  ·  5Commentaires  ·  Source: ReactiveCocoa/ReactiveCocoa

Pourquoi les signaux d'exécution de RACCommand ne se terminent-ils pas? Prenons l'exemple suivant:

RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^ RACSignal * (id value) {
    return [RACSignal createSignal:^ RACDisposable * (id<RACSubscriber> subscriber) {
        [subscriber sendNext:value];
        [subscriber sendCompleted];
        return nil;
    }];
}];

[command.executionSignals.switchToLatest subscribeNext:^(id value) {
    NSLog(@"next: %@", value); // logs "next: foo"
} completed:^{
    NSLog(@"completed"); // never executes
}];

[command execute:@"foo"];

Ne pas se tromper avec le signal executionSignals des signaux.

question

Commentaire le plus utile

[[command.executionSignals
    map:^(RACSignal *execution) {
        return [execution doCompleted:^{
            // something
        }];
    }]
    switchToLatest]

Tous les 5 commentaires

-switchToLatest ne se termine pas tant que le signal de signaux n'est pas terminé. Vous devez utiliser -materialize ou -concat: sur les signaux internes pour identifier un événement d'achèvement.

J'ai regardé la documentation de tout sauf celle de -switchToLatest .

Merci pour la réponse rapide. Vous êtes top les gars. :clin d'œil:

Salut les gars

Je rencontre le même problème,
Comment pourrais-je obtenir le signal interne d'une commande?

Merci

Mon je reçois un exemple de code?

Merci

[[command.executionSignals
    map:^(RACSignal *execution) {
        return [execution doCompleted:^{
            // something
        }];
    }]
    switchToLatest]
Cette page vous a été utile?
0 / 5 - 0 notes