2017-02-18 3 views
0

Wie ich Optional Versprechen Verkettungs machen kann? z. B. habe ich zwei Versprechungen und ich muss nur durch einige Bedingungen von ersten vielversprechenden Ergebnissen überprüfen.PromiseKit optional Verkettungs Swift

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

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

Aber wenn ich etwas schreiben, wie diese Compiler diese Art von denkt, ist Versprechen ?, nicht Beliebig (Bit „Any“ Ich meinen andere Klasse/Struktur)

Also, wie ich eine Art machen kann ketten? Und es sollte immer einen geben und einen wie üblich.

Antwort

0

Ich glaube, Sie so etwas wie dies wollen:

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

Wenn Ergebnis 0 die secondResult.value wird mit dem Wert von 5 Int, wenn Ergebnis 1 ist die secondResult.value wird "test" sein. Dann können Sie das Ergebnis im zweiten Versprechen verwenden, um die Entscheidung zu treffen.

+0

danke, aber PromiseKit bietet keine optionale Versprechen der Rückkehr, ich habe sie bei Github gefragt –