2017-06-06 5 views
0

Ich habe eine Situation, in der ich in einer Klasse 3 Funktionen habe. a, b und c Funktion. Ich rufe c Funktion innerhalb b an und b Funktion innerhalb a. aber hier habe ich 1 Frage. wo b Funktionsvervollständigungsblock aufgerufen wird, sobald der Funktionsvervollständigungsblock der c vollständig ausgeführt wurde.Wie ruft man den Block innerhalb der Funktion auf, wer auf die Fertigstellung einer anderen Funktion in sich selbst wartet?

zum Beispiel:

typealias fetchCompletionBlock =() -> Void 

class abcd { 

    func a() { 
     b({ 
      print("b called completed") 
     }) 
    } 
    func b(_ onCompletion: @escaping fetchCompletionBlock) { 
     c({ 
      print("c called completed") 
     }) 
    } 
    func c(_ onCompletion: @escaping fetchCompletionBlock) { 
     print("c called") 

     onCompletion() 
    } 
    //self.a() 
} 

var data = abcd() 
data.a() 

wo die Funktion b Beendigung Block aufzurufen. ich weiß, dass es innerhalb des Funktionskörpers ist, aber ich kenne den genauen Platz nicht.

Könnte jemand dabei helfen.

+0

Es liegt innerhalb des Abschluss-Block Sie c geben sollte(). d.h. nach der Druckzeile ("c called completed"). –

Antwort

1

Der Funktionsvervollständigungsblock sollte im c-Funktionsvervollständigungshandler aufgerufen werden.

Funktion b sollte wie:

func b(_ onCompletion: @escaping fetchCompletionBlock) { 
    c({ 
     print("c called completed") 
     onCompletion() 
    }) 
} 
+0

ja, es funktioniert .. danke – user1960279

Verwandte Themen