我使用promisekit 3.0來幫助以乾淨的方式鏈接alamofire回調。目標是從網絡調用開始,並承諾返回一系列網址。PromiseKit 3.0:鏈接鏈接
然後,我正在尋找執行網絡調用盡可能多的這些網址,根據需要找到我正在尋找下一個鏈接。一旦找到這個鏈接,我可以將它傳遞給下一步。
這部分是我卡住的地方。
我可以選擇數組中的任意索引,但我無法弄清楚循環是如何保持它的,直到返回正確的信息。
我試圖從這個obj-c的例子中學習,但我無法在swift中工作。
https://stackoverflow.com/a/30693077/1079379
他是我做了什麼更實際的例子。
Network.sharedInstance.makeFirstPromise(.GET, url: NSURL(string: fullSourceLink)!)
.then { (idArray) -> Promise<AnyObject> in
let ids = idArray as! [String]
//how do i do that in swift? (from the example SO answer)
//PMKPromise *p = [PMKPromise promiseWithValue: nil]; // create empty promise
//only thing i could do was feed it the first value
var p:Promise<AnyObject> = Network.sharedInstance.makePromiseRequestHostLink(.POST, id: ids[0])
//var to hold my eventual promise value, doesn't really work unless i set it to something first
var goodValue:Promise<AnyObject>
for item in ids {
//use continue to offset the promise from before the loop started
continue
//hard part
p = p.then{ returnValue -> Promise<AnyObject> in
//need a way to check if what i get is what i wanted then we can break the loop and move on
if returnValue = "whatIwant" {
goodvalue = returnValue
break
//or else we try again with the next on the list
}else {
return Network.sharedInstance.makeLoopingPromise(.POST, id: item)
}
}
}
return goodValue
}.then { (finalLink) -> Void in
//do stuck with finalLink
}
有人可以告訴我如何正確的結構,請嗎?
嵌套承諾如反模式,以避免?在那種情況下,最好的方法是什麼。
我不久前通過使用when(請參閱我的回答)計算出我的東西。不需要一個空的承諾,我不需要親自迭代並創建承諾對象。相反,我遍歷結果數組。 – stanley