我正在测试反应性可可。 在下面的代码中,我希望输出为:
name : Item 1
arr : a1
arr : a2
name : Item 2
arr : b1
arr : b2
done
但是我得到了不同的不可预知的结果,例如:
name : Item 1
arr : a1
arr : b1
name : Item 2
arr : a2
arr : b2
done
为什么会这样? 我如何强制Reactive Cocoa给我第一个输出?
NSArray * arr = @[@{@"name":@"Item 1", @"array" : @[@"a1",@"a2"]} , @{@"name":@"Item 2", @"array":@[@"b1",@"b2"]}];
[[[arr rac_sequence].signal flattenMap:^RACStream *(NSDictionary *dict) {
NSArray * arr = dict[@"array"];
NSLog(@"name : %@", dict[@"name"]);
return [[arr rac_sequence].signal flattenMap:^RACStream *(NSString *value1) {
NSLog(@"arr %@",value1);
return nil;
}];
}]subscribeCompleted:^{
NSLog(@"done");
}];
答案 0 :(得分:2)
-signal
将序列转换为异步发送的信号。因此,您看到一些不确定性并不令人惊讶。
您想要的是使用-signalWithScheduler:RACScheduler.immediateScheduler
。