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当前是否正在执行。它常用于监听按钮点击、网络请求等。

 

posted @ 2019-12-27 17:00  程石亮  阅读(233)  评论(1)    收藏  举报