2016-10-01 1 views
0

J'ai un bloc qui a bloc à l'intérieurSwift: comment annuler bloc de code

fun abc(){ 
a({ 
//some processing 
    b({ 
    //some asynchronous work 
    }) 
    }) 
} 

quand un bouton est appuyé, la méthode abc est appelée et il fait une tâche en se connectant à Internet et prend un certain temps. Je cherche le moyen d'annuler le bloc précédent et d'exécuter le bloc en cours s'il est tapé deux fois. S'il vous plaît suggérer

+1

Vous vous posez des fermetures résiliables. Découvrez ceci si vous ciblez Swift 3 http://stackoverflow.com/a/39684520/1495682 – Kubba

Répondre

0

Il n'y a pas d'option directe pour annuler votre blocage. Et le bloc sera exécuté quand il est appelé seulement une manière de placer la condition dans le corps du bloc et n'exécute pas la partie qui est dedans.

Dans votre cas, essayez d'utiliser Operation et OperationQueue cette approche vous donnera une solution flexible pour l'exécution de l'opération de gestion et donne l'occasion aux opérations cancel.

exemple Petit:

let operationQueue = OperationQueue.main 
    let operation = Operation() 

    operationQueue.addOperation(operation) 

    //Cancel operation that is executing 
    operation.cancel()