RAC篇(下) - 其它的api
deliverOn: 指定subscriber订阅者的block回调线程
- (RACSignal *)deliverOn:(RACScheduler *)scheduler { return [RACSignal createSignal:^(id<RACSubscriber> subscriber) { return [self subscribeNext:^(id x) { [scheduler schedule:^{ [subscriber sendNext:x]; }]; } error:^(NSError *error) { [scheduler schedule:^{ [subscriber sendError:error]; }]; } completed:^{ [scheduler schedule:^{ [subscriber sendCompleted]; }]; }]; }]; }
subscriberOn: 指定signal发送信号的线程
- (RACSignal *)subscribeOn:(RACScheduler *)scheduler { return [RACSignal createSignal:^(id<RACSubscriber> subscriber) { [scheduler schedule:^{ [self subscribe:subscriber]; }]; return nil; }]; }
RACCommand是RAC很重要的组成部分,通常用来表示某个action的执行。RACCommand提供executionSignals、 executing、 error等一连串公开的信号,方便外界对action执行过程与执行结果进行观察。executionSignals是signal of signals,如果外部直接订阅executionSignals,得到的输出是当前执行的信号,而不是执行信号输出的数据,所以一般会配合flatten或switchToLatest使用。 errors,RACCommand的错误不是通过sendError来实现的,而是通过errors属性传递出来的。 executing,表示该command当前是否正在执行。它常用于监听按钮点击、网络请求等。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号