我正在尝试使用 PromiseKit,并且在解决这个问题时遇到了一些麻烦。我有一个类似的功能
func lengthyOperation() -> Promise<TestObject> {
return Promise { fulfil, reject in
dispatch_async(GlobalUserInitiatedQueue) {
do {
let testObject = ...
fulfil(testObject)
} catch {
reject(error)
}
}
}
}
我有另一个函数,我想调用它,并返回另一个承诺
func lengthyOperation2() -> Promise<Test2Object> {
return Promise { fulfil, reject in
let test2Object = ...
if test2Object == nil {
lengthyOperation().then { testObject: TestObject in
let test2Object = doSomethingWithTestObject(testObject)
fulfil(test2Object) //Compiler error here
}.error {
reject(error)
}
} else {
fulfil(test2Object)
}
}
}
我得到一个编译器错误说
Cannot convert return expression of type 'Void' (aka '()') to return type 'AnyPromise'
几个问题:
- 我需要在 promise 调用中使用 dispatch_async 吗?
- 我该如何去调用和返回这样的嵌套承诺?
谢谢
编辑:更正一些伪代码