2017-01-10 1 views
-1

Problem:Wie kann ich eine Funktion erstellen, deren Ausführung beim nächsten Funktionsaufruf nicht überschrieben wird?

Ich habe gerne Funktion zu aktualisieren, wie in meinem Post.Aber wenn ein Benutzer wie Funktion schnell oder kontinuierlich trifft.

Meine UI-Aktualisierung des Like-Status wird durch den nächsten Funktionsaufruf überschrieben und verursacht einen Fehler im Like-Counter.

Frage: Wie kann ich einen anderen Funktionsaufruf stoppen, um die Ausführung des vorherigen Funktionsaufrufs zu überschreiben?

P. s: Ich denke, Beispielcode wird nicht benötigt.

Vielen Dank im Voraus.

+0

Was meinst du mit dem nächsten Funktionsaufruf? – Poles

+0

@Poles: wenn ich die Taste einmal oder mehrmals drücke, wird die Funktion mehrmals aufgerufen? – user3804063

+1

Code ist fast * immer * hilfreich. Es hört sich an, als würde Ihr Knopfdruck eine Art asynchronen Netzwerkbetrieb auslösen. Sie könnten möglicherweise eine serielle Dispatch-Warteschlange oder einen booleschen Befehl verwenden, um Vorgänge zu sperren, bis der erste abgeschlossen ist. – Paulw11

Antwort

1

Ich denke, der einfachste Weg, ein Flag-Variable zu verwenden ist, und Sie einen Timer Ihrer Flagvariable einstellen können später wie bei Bedarf zurück:

var flag = false 

func test() { 
    if flag == false { 
     // your code ... 
     print("123") 
    } 

    flag = true 
} 

// Set this later 
Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector("some function"), userInfo: nil, repeats: false) 
Verwandte Themen