Welchen Vorteil gibt es bei der Verwendung der $timeout in AngularJS, anstatt Fenster.setTimeout?
Hatte ich einen Vorschlag zur Implementierung eines timeout-so:
$timeout(function() {
//Loadind done here - Show message for 3 more seconds.
$timeout(function() {
$scope.showMessage = false;
}, 3000);
}, 2000);
};
Kann mir jemand sagen, was ist der Grund /Vorteil bei der Verwendung dieser eher als die Verwendung von setTimeout?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In grundlegende Worte
$timeout
bezieht sich auf angularjs, wennsetTimeout
- JavaScript.Wenn Sie denken immer noch zu verwenden
setTimeout
daher müssen Sie aufrufen$scope.$apply()
nachAls eine Randnotiz
Ich schlage vor, Sie Lesen Wie kann ich das "denken in AngularJS" wenn ich ein jQuery-hintergrund? post
und AngularJS: verwenden Sie $timeout, setTimeout nicht
Beispiel 1: $timeout
Beispiel 2: setTimeout (gleiche Logik)
Demo Fiddle
$timeout gibt auch ein Versprechen
JS
HTML
$timeout ausgelöst digest-Zyklus
Betrachten wir einige 3d-party-code (nicht AngularJS) wie Cloudinary plugin, dass der Upload-Datei und gibt uns 'Fortschritt' Prozentsatz Rückruf.
Wollen wir aktualisieren unsere UI aka
$scope.file = file_;
So leer
$timeout
für uns die Arbeit macht, löst Sie die digest-Zyklus und$scope.file
aktualisiert durch 3d-party wird neu gerendert, in der GUIsetTimeout()
definitiv nicht Lesen jQuery (es ist das standard-JavaScript).setTimeout
. Danke für fixAngularJS ändert den normalen JavaScript-flow, indem Sie Ihren eigenen Ereignis-Verarbeitung-Schleife. Diese teilt dem JavaScript in klassischen und AngularJS-Ausführungskontext. Nur Operationen, die angewendet werden in der AngularJS Ausführungskontext profitieren von AngularJS Daten-Bindung, Ausnahmebehandlung, Eigentum beobachten, etc.
Mithilfe der AngularJS $timeout-service, wickelte
setTimeout
ausgeführt werden, die in der AngularJS-Ausführungskontext.Weitere Informationen finden Sie unter
Integration mit dem browser Ereignis-Schleife