私は 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 が必要ですか?
- このようにネストされた promise を呼び出して返すにはどうすればよいですか?
ありがとう
編集:疑似コードの一部を修正