gpt4 book ai didi

ios - ReactiveCocoa -如何并行处理多个独立信号?

转载 作者:行者123 更新时间:2023-12-01 20:07:30 26 4
gpt4 key购买 nike

我想并行启动多个独立的网络请求,并在所有请求完成后订阅(我不在乎它们是否完成或出错)。

现在,我使用 combineLatest 。因此,这些请求是并行进行的(如我所愿),但是当信号发送error时,订阅发生错误。

我找不到允许我并行启动多个独立请求并听完所有操作的运算符。

真诚的

编辑

在其他情况下(需要单独使用信号),我需要订阅错误。所以我仍然需要我的信号才能sendError:

我的用例是这样的:

一方面,我有一个可以进行完全同步的应用程序。这将启动所有独立请求。我需要知道何时完成所有请求才能关闭progressHUD。我不在乎我的信号是否完成了sendErrorsendCompleted

但是另一方面,我有多个按钮,可以分别重新启动每个请求,在这种情况下,我需要告诉用户信号是成功还是失败。

最佳答案

我使用catch运算符给出了一个答案:
我将catch RAC运算符添加到所有信号中,以防信号失败生成新的[RACSignal empty]:

NSArray* allSignals = @[signal1, signal2, signal3, signal4];
NSMutableArray* optionalSignals = [NSMutableArray array];
for (RACSignal* signal in allSignals) {
RACSignal* catchableSignal = [signal catch:^RACSignal *(NSError *error) {
return [RACSignal empty];
}];
[optionalSignals addObject:catchableSignal];
}

return [RACSignal combineLatest:optionalSignals];

这不会改变我的单个信号的性质,我受益于 combineLatest功能。

编辑

如果有人有更优雅的RAC方法来处理for ... in循环,我仍然很感兴趣。

关于ios - ReactiveCocoa -如何并行处理多个独立信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com