【问题标题】:ReactiveCocoa recurring signalReactiveCocoa 循环信号
【发布时间】:2016-08-23 11:42:16
【问题描述】:

我有以下代码:

- (RACSignal *)addSyncTask:(RACSignal *)task withInterval:(NSTimeInterval)interval
{
    return [[task concat:[[RACSignal empty] delay:interval]] then:^RACSignal *{
        return [self addSyncTask:task withInterval:interval];
    }];
}

- (void)setupFooSync
{
    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        [self.API syncFooWithCompletion:^(id response, NSError *error) {
            [subscriber sendError:error];
            [subscriber sendCompleted];
        }];
        return nil;
    }];
    [self addSyncTask:signal withInterval:60];
}

这个想法是,一旦setupFooSync 被调用,同步将每 60 秒发生一次,直到包含的实例被释放。但是,使用上面的代码,同步永远不会发生。当我将+createSignal: 更改为+startLazilyWithScheduler: 时,它只发生一次。我猜测由于每次都重复使用相同的同步信号,因此需要进行某种重置。任何指针将不胜感激。

【问题讨论】:

    标签: ios objective-c reactive-cocoa


    【解决方案1】:

    concat 好像没有触发需要的 subscribe 方法,试试这个吧:

    [[[task then:^RACSignal *{
        return [[RACSignal interval:5 onScheduler:[RACScheduler mainThreadScheduler]] take:1];
    }] repeat] subscribeCompleted:^{
    
    }];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      相关资源
      最近更新 更多