2016-05-13 5 views
0

Angenommen, Sie haben eine Verzweigung in Ihrer Versprechenskette, die entweder nichts oder ein AnyObject-Versprechen zurückgeben kann. Was würden Sie als Rückgabetyp der "then" -Klausur angeben? Zum Beispiel:PromiseKit Branching Versprechen

Wenn ich Void als Rückgabetyp für die 'then' Schließung setze, bekomme ich einen seg Fehler; Wenn ich Promise als Rückgabetyp einrichte, erhalte ich einen Fehler:

missing return in a closure expected to return Promise<AnyObject> 

Irgendwelche Vorschläge?

Dank

+0

Wenn Sie als Rückgabetyp "Versprechen" verwenden, müssen Sie eine Zusage zurückgeben. Im Moment tun Sie das nur von innen "if false", was niemals ausgeführt wird. – jtbandes

+0

Wenn ich 'func Probe zu ändern() -> Versprechen { return Versprechen {erfüllen, weisen in erfüllen (1) } .then {_ -> Void in debugPrint ("foo") } {.then _ -> Versprechen in wenn falsch { return Versprechen {erfüllen, weisen in erfüllen (0) } } return Versprechen {erfüllen, weisen in erfüllen (0) } } } 'es funktioniert ; aber es scheint irgendwie lahm, dass ich explizit ein leeres Versprechen zurückgeben muss @ jtbandes – bunana

+0

Was ist Ihr Ziel? Warum hast du diesen Zweig 'if false'? – jtbandes

Antwort

1

auf dem Codebeispiel Basierend, sehe ich keinen Grund, eine ANYOBJECT zurückzukehren. Wenn Sie Void oder ein Objekt optional zurückgeben möchten, machen Sie ein Versprechen, das ein optionales enthält.

func sample() -> Promise<AnyObject?> { 
    return Promise { fulfill, reject in 
     functionForGettingObjectWithCallback() { result: AnyObject? in 
      fulfill(result) 
     } 
    } 
} 
Verwandte Themen