0

假设你的 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>

有什么建议么?

谢谢

4

1 回答 1

1

根据代码示例,我认为没有理由返回 AnyObject。如果你想有选择地返回 Void 或 Object,那么做出一个包含可选的 promise。

func sample() -> Promise<AnyObject?> {
    return Promise { fulfill, reject in
        functionForGettingObjectWithCallback() { result: AnyObject? in
            fulfill(result)
        }
    }
}
于 2016-05-28T02:53:45.503 回答