【发布时间】:2018-06-25 12:42:55
【问题描述】:
这段代码
let promise: Promise<Supplier> = self.supplierController
.update(supplier: supplier)
let block: ((Error) throws -> Supplier) = { (error: Error) throws -> Supplier in
let supplier: Supplier = supplier
guard (error as NSError).code == 405 else {
throw error
}
return supplier
}
let newPromise =
promise
.recover(block)
.done { (_: Supplier) in
changeCompanyIdAndAppendMessage()
}
给出编译时错误
'(Error) throws 类型的抛出函数的无效转换 -> 供应商'到非抛出函数类型'(错误)-> 保证'
为什么它会尝试转换?在我看来,它必须使用这个函数:
public func recover(on: DispatchQueue? = 默认,策略: PromiseKit.CatchPolicy = default, _ body: @escaping (Error) throws -> U) -> PromiseKit.Promise where U : Thenable, Self.T == U.T
来自 PromiseKit
我添加了显式类型并将 promise 分成块,以免错过任何内容
【问题讨论】:
标签: swift generics promisekit