对不同类型的两个 Promise 使用相同的 then/catch/finally 块
Posted
技术标签:
【中文标题】对不同类型的两个 Promise 使用相同的 then/catch/finally 块【英文标题】:Using same then/catch/finally blocks for two promises of different types 【发布时间】:2015-08-13 11:52:01 【问题描述】:我有以下操作:
class CreateObjectOperation
// ...
func promise() -> Promise<Object>
class DeleteObjectOperation
// ...
func promise() -> Promise<Void>
我希望能够为两者使用相同的 then/catch/finally
块。我尝试了以下方法:
let foo: Bool = ...
firstly
(foo ?
CreateObjectOperation().promise() :
DeleteObjectOperation().promise()
) as Promise<AnyObject>
.then _ -> Void in
// ...
.finally
// ...
.catch error in
// ...
但这不会编译。是否有任何可行的解决方案(除了将代码从块移动到单独的函数,我想避免)?
【问题讨论】:
【参考方案1】:找到了:
firstly _ -> Promise<Void>
(foo ?
CreateObjectOperation().promise().then _ in Promise<Void>() :
DeleteObjectOperation().promise()
) as Promise<AnyObject>
.then _ -> Void in
// ...
【讨论】:
以上是关于对不同类型的两个 Promise 使用相同的 then/catch/finally 块的主要内容,如果未能解决你的问题,请参考以下文章