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