如何制作可选承诺链? 例如,我有两个承诺,我必须从第一个承诺结果的某些条件中检查第二个。
promise1(). then { result -> Promise? in
if result.success {
return promise2()
}
return nil
}
.then { secondResult -> Void in
}
.always {...}
.catch ...
但是当我写这样的东西时,编译器认为类型是Promise?而不是Any(bit" Any"我的意思是任何其他类/结构)
那么,我怎么能做一些链接呢?并且应该像往常一样有一个总是和一个捕获处理程序。
答案 0 :(得分:0)
我想你想要这样的东西:
let p = Promise<Int>() { fulffill, reject in
fulffill(0)
}.then { result -> Promise<Any>? in
if result == 0 {
return Promise(value: 5)
} else if result == 1 {
return Promise(value: "test")
} else {
return nil
}
}.then { secondResult -> Void in
print("\(secondResult?.value)")
}.always {
print("Final!")
}
如果 result 为0,则 secondResult.value 将为Int,值为5,如果 result 为1,则为 secondResult。值将是“测试”。然后你可以使用第二个Promise中的结果来做出决定。