假设我有两个要与when(resolved:)
. 如果第一个承诺有问题,我想拒绝承诺,否则解决。本质上,这就是我想要做的:
func personAndPetPromise() -> Promise<(Person, Pet?)> {
let personPromise: Promise<Person> = ...
let petPromise: Promise<Pet> = ...
when(resolved: personPromise, petPromise).then { _ -> (Person, Pet?) in
if let error = personPromise.error {
return Promise(error: error) // syntax error
}
guard let person = personPromise.value else {
return Promise(error: myError) // syntax error
}
return (person, petPromise.value)
}
}
这样我就可以在外部做这样的事情:
personAndPetPromise().then { person, pet in
doSomethingWith(person, pet)
}.catch { error in
showError(error)
}
问题出then { _ in
在personAndPetPromise
. 该方法不可能同时返回 aPromise(error:)
和 a (Person, Pet?)
。
我还能如何拒绝阻止?