let (signal, sink) = Signal<[CLBeacon], BeaconManagerError>.pipe()
当我拨打此电话是因为用户禁用了蓝牙:
sendError(self.sink, error)
Signal
被中断,再次启用蓝牙后,我不会收到更多next
或interrupted
个事件。 Signal
已被破坏。
如何在不中断/打破error
的情况下将observer
类型发送到Signal
?我在RAC 4文档中找不到。谢谢!
答案 0 :(得分:1)
根据设计,错误会导致信号完成。 documentation说:
失败只应用于表示“异常”终止。如果 让经营者(或消费者)完成工作很重要, 描述结果的下一个事件可能更合适。
如果您想将错误转换为flatMapError
个事件,可以使用here所述的retry
运算符,或者如果您只想允许几个出现,请使用<ul>
<li ng-repeat-start="item in vm.array track by $index">{{item.a}}</li>
<li ng-repeat-end ng-if="$index>0 && $index+1 % 15 == 0"></li>
</ul>
错误。
答案 1 :(得分:1)
如果你想要不同于Next* (Error|Completed)
的语义,我建议在类型中编码。您可以使用Signal
1>来使用无法失败的Result
但哪些值可以成功或失败
Signal<Result<[CLBeacon], BeaconManagerError>, NoError>
signal
不会发出任何错误,但其Next
个事件将为Result.Success<[CLBeacon]>
或Result.Failure<BeaconManagerError>
,**且收到{{{}时信号不会终止1}}。