加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

RxSwift:订阅Observable时的额外参数’onError’

发布时间:2020-12-14 04:58:10 所属栏目:百科 来源:网络整理
导读:我有以下代码: let fetcher = DiagnosticFetcher(commandSender: sender)fetcher.fetch() .observeOn(MainScheduler.instance) .subscribe( onNext: { self.store.save(content: $0) },onError: { self.view.showError("Error") },onCompleted: { log.verbo
我有以下代码:

let fetcher = DiagnosticFetcher(commandSender: sender)
fetcher.fetch()
    .observeOn(MainScheduler.instance)
    .subscribe(
       onNext: { self.store.save(content: $0) },onError: { self.view.showError("Error") },onCompleted: { log.verbose("Diagnostic fetched") })

它不编译:调用中的额外参数’onError’.如果我使用onSuccess或onDoesNotExistButShowTheBug而不是onNext,我会得到同样的错误.

fetch()方法返回一个Observable< String> (其最后一个运算符是reduce).似乎subscribe()调用只需要一个lambda:

fetcher.fetch()
   .observeOn(MainScheduler.instance)
   .subscribe(onNext: { self.store.save(content: $0) })

结果:调用外部参数标签’onNext:’.和:

fetcher.fetch()
   .observeOn(MainScheduler.instance)
   .subscribe({ self.store.save(content: $0) })

编译好.

我觉得我得到了错误的subscribe()实现.我想要那个:

public func subscribe(onNext: ((ElementType) -> Void)? = nil,onError: ((Swift.Error) -> Void)? = nil,onCompleted: (() -> Void)? = nil) -> Disposable {

但显然,编译器没有.
我正在使用XCode 9.2和Swift 4以及RxSwift 4.1.1.

我的应用程序中有其他部分使用onNext:onError:在一个可观察的工作区.我不能指出这个电话的不同之处.

有关如何识别问题根源的任何想法?

解决方法

我通过指定onError lambda中的第一个参数来编译它:

fetcher.fetch()
   .observeOn(MainScheduler.instance)
   .subscribe(
      onNext: { self.store.save(content: $0) },onError: { _ in self.view.showError("Error")})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读