首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >走出PromiseKit的正确途径

走出PromiseKit的正确途径
EN

Stack Overflow用户
提问于 2018-11-02 01:03:41
回答 1查看 46关注 0票数 0

从这样的函数中抛出错误的正确方法是什么:

代码语言:javascript
复制
    func fetch(by id: String, page: Int = 1) -> Promise<ProductReviewBase> {
    // call api
    guard let url = URL(string: "") else {
        return Promise { _ in return IntegrationError.invalidURL }
    }

    return query(with: url)

}

我搞不懂是让这个函数引发错误,还是返回一个返回错误的承诺。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-02 01:17:35

我真的讨厌把隐喻混在一起的界面。如果您要返回一个承诺,那么使用允诺的错误系统。如果你想要更多的理由而不是我的仇恨,那么想象一下它在呼叫站点上会是什么样子:

代码语言:javascript
复制
do {
    (try fetch(by: id))
        .then {
            // do something
        }
        .catch { error in 
            // handle error
        }
}
catch {
    // handle error
}

vs

代码语言:javascript
复制
fetch(by: id)
    .then {
        // do something
    }
    .catch { error in 
        // handle error
    }

后者看起来要干净得多。

下面是编写示例函数的最佳方法(IMO):

代码语言:javascript
复制
func fetch(by id: String, page: Int = 1) -> Promise<ProductReviewBase> {
    guard let url = URL(string: "") else { return Promise(error: IntegrationError.invalidURL) }
    return query(with: url)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53111396

复制
相关文章

相似问题

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