0

我如何进行可选的承诺链接?例如,我有两个承诺,我必须仅根据第一个承诺结果的某些条件检查第二个。

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

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

但是当我编写类似这个编译器的东西时,它认为类型是 Promise?,而不是 Any(位“Any”我的意思是任何其他类/结构)

那么,我怎样才能进行某种链接呢?并且像往常一样应该有一个始终和一个捕获处理程序。

4

1 回答 1

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!")
}

如果结果为 0,则secondResult.value将为 Int,值为 5,如果结果为 1,则secondResult.value将为“test”。然后你可以使用第二个 Promise 中的结果来做出决定。

于 2017-02-18T15:55:55.527 回答