【发布时间】:2016-05-13 02:02:47
【问题描述】:
假设你的 Promise 链中有一个可以不返回任何内容或 AnyObject 承诺的分支。你会指定什么作为'then'闭包的返回类型?例如:
func sample() -> Promise<AnyObject> {
return Promise { fulfill, reject in
fulfill(1)
}
.then { _ -> Void in
if false {
return Promise { fulfill, reject in
fulfill(0)
}
}
}
}
如果我将 Void 作为“then”闭包的返回类型,则会出现段错误;如果我将 Promise 作为返回类型,则会出现错误:
missing return in a closure expected to return Promise<AnyObject>
有什么建议吗?
谢谢
【问题讨论】:
-
如果你使用
Promise作为返回类型,你必须返回一个Promise。现在你只能从if false内部执行此操作,它永远不会被执行。 -
如果我改成
func sample() -> Promise<AnyObject> { return Promise { fulfill, reject in fulfill(1) }.then { _ -> Void in debugPrint("foo") }.then { _ -> Promise<AnyObject> in if false { return Promise { fulfill, reject in fulfill(0) } } return Promise { fulfill, reject in fulfill(0) } } }就可以了;但我必须明确返回一个空洞的承诺似乎有点蹩脚@jtbandes -
你的目标是什么?为什么会有这个
if false分支? -
只是为了澄清闭包可以返回 void 或解析为某个对象的承诺;我不清楚 PromiseKit 的“then”方法的实现以及它在引擎盖下的作用@jtbandes
-
尝试返回一个可选的?
标签: xcode swift promisekit