usar como javascript angularjs settimeout angular-services

javascript - como - settimeout angularjs



diferencia entre setTimeout en javascript y $ timeout en angularjs (2)

Soy nuevo en el marco angular. Aquí está mi escenario donde, quiero cambiar mi $ scope.variable después de un período de tiempo, así que setTimeout método setTimeout javascript.

$scope.variable=''Previous''; setTimeout(function(){ $scope.variable=''NEXT''; },3000);

Este código no funcionó para mí. Usé $apply() para hacer que este código funcione.

Más tarde, llegué a saber que angular en sí tiene un servicio de $ timeout que hace el mismo trabajo.

$scope.variable=''Previous''; $timeout(function () { $scope.variable=''NEXT''; }, 2000);

¿Cómo puedo comparar el rendimiento del servicio $timeout con javascript setTimeout ?

¿Por qué deberíamos usar $timeout lugar de setTimeout ?

Por favor, dame algunos ejemplos y razones para usarlo, que muestren el rendimiento.

Gracias :)


Cualquier variable de alcance de AngularJS cuando se maneja desde afuera (incluyendo ajax) necesita un $ apply ().

$ timeout () se ocupa del alcance actual y se ejecuta en el mismo ciclo de resumen después de que se realiza la detección de todos los cambios.

Una belleza de $ timeout () que descubrí recientemente es que, si no pasa el parámetro de tiempo, esperará a que se complete el DOM.

Asi que,

$timeout(function(){ console.log("show after directive partial loaded") }); //note, no time parameter

Ejecute este código en una directiva y la función de devolución de llamada de tiempo de espera se activará una vez que la directiva haya cargado el parcial

Espero que esto ayude.


Hay algunos casos en los que se necesita realizar algún tipo de operación de tiempo de espera y esto lo conseguimos con frecuencia utilizando la función setTimeout() JavaScript.

Sin embargo, si usamos setTimeout() en una aplicación AngularJS, también necesitamos usar $scope.$apply() para asegurarnos de que cualquier cambio en el scope se refleje en otra parte (es decir, los datos están vinculados en una view ).

AngularJS proporciona un práctico envoltorio para esto: $timeout() - hace el $apply() para el cual no tenemos que $apply los cambios.

Respecto al rendimiento .

Si está usando $timeout para crear lo que es esencialmente un intervalo, entonces no lo use. Si su aplicación es grande, entonces $apply también activará un ciclo de $digest que probablemente no quiera que ocurra, seguramente disminuirá el rendimiento.