如何使用方法与抛出返回在promiseKit值

问题描述 投票:0回答:1

我创建了一组承诺依赖于从函数的结果可能会引发错误。我可以得到如下图所示的代码这个工作,但我不喜欢双catch块。我想用一个单一的promiseKit catch块。任何人有一个更好的解决方案,工程?

do {
    let accounts = try Account.getAccounts()
    let mailboxPromises = accounts.map { self.fetchMailboxes($0) }

    when(fulfilled: mailboxPromises).map { _ in
        self.updateBadgeCount()
    }
    .catch { (error) in

    }
} catch  {

}
swift promisekit
1个回答
0
投票

也许包裹Account.getAccounts()的一个承诺,你可以再你的承诺连锁使用?

func getAccounts() -> Promise<[Account]> {
    return Promise {
        do {
            let accounts = try Account.getAccounts()
            $0.fulfill(accounts)
        } catch {
            $0.reject(error)
        }
    }
}

更新:

下面的信息是从https://github.com/mxcl/PromiseKit/blob/master/Documentation/CommonPatterns.md的文件,所以你应该能够改用你的待办事项/ catch块的这种模式。

由于承诺处理引发的错误,你不必调用换到一个DO块扔功能,除非你真的想在本地处理错误:

foo().then { baz in
    bar(baz)
}.then { result in
    try doOtherThing()
}.catch { error in
    // if doOtherThing() throws, we end up here
}
© www.soinside.com 2019 - 2024. All rights reserved.