Ich halte im Allgemeinen eine Task-Variable bereit, um irgendwo Abbrechen für eine Effizienz zu verwenden. (Und auch cancel aufrufen, bevor die Aufgabe festgelegt wird, um die Erstellung doppelter asynchroner Jobs zu vermeiden.)
Code: Select all
class Test {
private var task: Task?
func start() {
task?.cancel()
task = Task { // do something with Task.isCancelled }
}
}
Aber mir wurde klar, dass dieser Code einen Datenwettlauf verursachen könnte, da task eine veränderliche Sache ist und start überall aufgerufen werden kann. Ich weiß, dass es an der Zeit ist, Actor zu verwenden, aber ich bin gespannt, ob dies immer die beste Lösung ist oder nicht. Bei diesem Konzept muss ein Ganzes, das Variablen hat, ein Akteur sein (Ansichtsmodell, Hilfsklasse usw.). Für mich könnte es wie eine Schauspielerexplosion sein.
Überdenke ich zu viel?
Was ist Ihre beste Vorgehensweise, wann und wo Sie einen Schauspieler einsetzen?