Ako môžem urobiť voliteľné sľuby reťazením? napr. mám dve sľuby a na druhú stranu musím skontrolovať iba niektoré podmienky z prvých sľubných výsledkov.
promise1(). then { result -> Promise? in
if result.success {
return promise2()
}
return nil
}
.then { secondResult -> Void in
}
.always {...}
.catch ...
Ale keď píšem niečo ako tento kompilátor si myslí, že tento typ je Promise ?, nie Any (bit "Any" mám na mysli akúkoľvek inú triedu / štruktúru)
Ako teda môžem urobiť reťazenie? A vždy by mal existovať jeden a vždy jeden manipulátor úlovkov.
odpovede:
0 pre odpoveď č. 1Myslím, že chcete niečo takéto:
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!")
}
ak výsledok je 0 secondResult.value bude Int s hodnotou 5, ak výsledok je 1 secondResult.value bude „test“. Potom môžete použiť výsledok v druhom prísľube na prijatie rozhodnutia.