2017-02-18 53 views
0

如何讓可選承諾鏈接? 例如,我有兩個承諾,我必須僅根據第一個承諾結果中的某些條件來檢查第二個承諾。PromiseKit可選鏈接Swift

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

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

但是,當我寫的是這樣的編譯器認爲該類型是無極?沒有任何(位「任意」我的意思是任何其他的類/結構)

所以,我怎麼能做出某種鏈接?像往常一樣,應該有一個總是和一個捕獲處理程序。

回答

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將詮釋與值5,如果結果是1 secondResult.value將被「測試」。然後你可以使用第二個Promise中的結果做出決定。

+0

謝謝,但PromiseKit不提供返回可選的Promise,我在github上問他們 –