angularjs - immediately - promesas en angular 6
AngularJS: ¿por qué es necesario aplicar $ para resolver correctamente una promesa $ q? (1)
En AngularJS, los resultados de resolver () se propagan de forma asíncrona, dentro de un ciclo $ digest, no de forma inmediata. Esto significa que las devoluciones de llamadas registradas con then () solo se llamarán (más tarde) cuando se produzca un ciclo de resumen.
En su código, nada está causando que Angular entre en un ciclo de resumen, por lo que nunca se llama a la devolución de llamada then (). Llamar a $ apply () es una forma de hacer que se ejecute un ciclo de resumen. Otra forma: agregue un botón con ng-click que no haga nada, luego haga clic en eso, causará un ciclo de resumen y verá los resultados:
<button ng-click="">Force digest by clicking me</button>
Consulte también https://stackoverflow.com/a/14657974/215945
Estoy intentando escribir un pequeño servicio en mi aplicación angular que me permitirá elegir los parámetros de configuración especificados en los objetos globales de Javascript. No quiero intentar acceder al objeto de configuración global a menos que el documento esté listo (porque no puedo garantizar el orden en que se insertarán los elementos del script en el HTML).
Sin embargo, no entiendo por qué necesito que la llamada a $apply
la resolución para propagarse a la devolución de llamada.
myModule.service(''GlobalConfigService'', [''$q'', ''$rootScope'', function($q, $rootScope) {
var def = $q.defer();
$(document).ready(function() {
def.resolve(MyConfig.val);
$rootScope.$apply();
});
def.promise.then(function () {
console.log(''I am called only when $apply() is called. Why?'');
});
return def.promise;
}]);