这段代码
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()
}给出编译时错误
从类型(错误)抛出->供应商‘到非抛出函数类型’(错误) ->保证‘的无效转换
它为什么要改信?在我看来,它必须使用这个功能:
公共函数恢复(on: DispatchQueue?=默认,策略: PromiseKit.CatchPolicy =默认,_ body:@转义(错误)抛出-> U) -> PromiseKit.Promise,其中U: Thenable,Self.T == U.T
来自PromiseKit
我添加了显式类型,并将诺言分割成块,以避免遗漏某些内容。
发布于 2018-06-25 13:08:26
您应该正确地返回承诺链,如下所示:
self.supplierController
.update(supplier: supplier)
.recover { error -> Promise<Supplier> in
let supplier: Supplier = supplier
guard (error as NSError).code == 405 else {
throw error
}
return .value(supplier)
}
.done { (_: Supplier) in
changeCompanyIdAndAppendMessage()
}来源:https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md
https://stackoverflow.com/questions/51023774
复制相似问题