假设我使用-flattenMap:
和-then:
拥有一系列ReactiveCocoa信号,如下所示:
__weak typeof(self) weakSelf = self
[[[self fooSignal] flattenMap:^RACStream *(Foo *foo) {
return [weakSelf barSignal];
}] then:^RACSignal *{
// create a signal using foo
}];
就我而言,barSignal
依赖于fooSignal
完成(严格来说,next
- 但fooSignal
只执行一次)而没有错误,并且next
的{{1}}值是荒谬的(barSignal
并不真正适用)。即使它发送了+combineLatest:
,它们依赖于操作,而非并行操作。
显然,我可以使用next
变量来访问__block
,但这在风格上不正确且难以遵循(不是严格的链向下)。
我可以编写一个自定义运算符来实现这一点,但是我认为代码要比foo
变量多得多,并且很难做出通用运算符。
是否有一种干净的方式来访问__block
?
答案 0 :(得分:2)
执行此操作的最佳方式似乎是使用foreach
和<?php
/*
* Generated configuration file
* Generated by: phpMyAdmin 4.4.8 setup script
* Date: Thu, 04 Jun 2015 15:01:24 +0000
*/
/* Servers configuration */
$i = 1;
/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
/* End of servers configuration */
$cfg['DefaultLang'] = 'it';
$cfg['blowfish_secret'] = '–––––––––––.––––––';
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
$cfg['ServerDefault'] = 1;
?>
。
-concat:
答案 1 :(得分:1)
您还可以使用-mapReplace:
:
_weak typeof(self) weakSelf = self
[[[self fooSignal] flattenMap:^RACStream *(Foo *foo) {
return [[weakSelf barSignal] mapReplace:foo];
}] flattenMap:^RACStream *(Foo *foo) {
// create a signal using foo
}];
答案 2 :(得分:0)
我会删除第二个-flattenMap:
,而是在-then:
的末尾添加barSignal
。 foo
变量将在那里,并且在订阅之前它将等到barSignal
完成。
__weak typeof(self) weakSelf = self
[[self fooSignal] flattenMap:^RACStream *(Foo *foo) {
return [[weakSelf barSignal] then:^RACSignal * {
// create a signal using foo
return [RACSignal createSignal ...
}];
}];