PromiseKit可选链接Swift

时间:2017-02-18 13:59:46

标签: ios swift promisekit

如何制作可选承诺链? 例如,我有两个承诺,我必须从第一个承诺结果的某些条件中检查第二个。

promise1(). then { result -> Promise? in
if result.success {
return promise2()
}
return nil
}
.then { secondResult -> Void in

}
.always {...}
.catch ...

但是当我写这样的东西时,编译器认为类型是Promise?而不是Any(bit" Any"我的意思是任何其他类/结构)

那么,我怎么能做一些链接呢?并且应该像往常一样有一个总是和一个捕获处理程序。

1 个答案:

答案 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中的结果来做出决定。