首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >恢复块的无效转换,PromiseKit

恢复块的无效转换,PromiseKit
EN

Stack Overflow用户
提问于 2018-06-25 12:42:55
回答 1查看 464关注 0票数 0

这段代码

代码语言:javascript
复制
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

我添加了显式类型,并将诺言分割成块,以避免遗漏某些内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-25 13:08:26

您应该正确地返回承诺链,如下所示:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51023774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档