PromiseKit опциональная цепочка Swift

Как я могу сделать необязательные обещания цепочки? Например, у меня есть два обещания, и я должен проверять второе только по некоторым условиям из результатов первого обещания.

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

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

Но когда я пишу что-то вроде этого, компилятор думает, что типом является Promise?, а не Any (бит "Any", я имею в виду любой другой класс / структуру)

Итак, как я могу сделать какую-то цепочку? И должен быть один обработчик всегда и один как обычно.

1 ответ

Я думаю, что вы хотите что-то вроде этого:

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". Затем вы можете использовать результат во втором Обещании, чтобы принять решение.

Другие вопросы по тегам