これは見事に機能します...
@interface Hello : NSObject
@property (nonatomic, strong, readonly) RACSignal *signal;
@end
@interface Hello ()
@property (nonatomic, strong, readwrite) RACSignal *signal;
@end
@implementation Hello
- (instancetype)init
{
self = [super init];
if(self)
{
self.signal = [[[self createSignal] replayLazily];
}
return self;
}
- (RACSignal *)createSignal
{
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[[Service getInstance] getProducts:^(NSArray *products) {
[subscriber sendNext:products];
[subscriber sendCompleted];
} error:^(NSError *error) {
[subscriber sendError:error];
}];
}];
}
@end
...エラーがない限り。
これは、RACMulticastConnection の sourceSignal がエラーを送信したためだと思います。
私がしたい行動
- 最初のサブスクライバーの場合はリクエストを開始します
- 2 番目のサブスクライバーがサブスクライブした場合 – 進行中のリクエストにフックする
- リクエストが成功した場合、新しいサブスクライバーは成功したリクエストから結果を取得します
- リクエストが成功しない場合、新しいサブスクリプションが新しいフェッチをトリガーします – マルチキャスト