In meiner app verpackt in Ich habe einen Dienst, die asynchron im Cache gespeicherten Wert zurückgibt.
.service('StateService', [
'$q',
function ($q) {
var value;
// ...
// ...
function getValue() {
return $q.when(value);
}
// ...
// ...
return {
getValue: getValue
// ...
// ...
};
}
]);
statische Variable "Wert" über Setter aktualisiert wird in der gleiche Service. Es ist eine Voraussetzung, Getter getValue()
zu haben, der asynchron arbeitet - die Idee ist, einen Identifikationspuffer in der Zukunft zu implementieren.
In der Hauptsteuerung muss ich $watch
Änderungen an StateService.getValue()
und Update-Bereich mit neuen value
, wenn es geändert wurde.
Gibt es eine Möglichkeit, $watch
verspricht (das sind eigentlich keine Ressource Aufrufe, sondern nur ein statischer Wert in ein Versprechen verpackt) mit $scope.$watch
?
Vielleicht durch Auspacken in jedem Digest und vergleichen alt einen neuen Wert?
Eine Alternative wäre, ein Ereignis, wenn die Cache-Änderungen zu erhöhen und Ihre Controller hören auf dieses Ereignis, anstatt den Cache zu beobachten? – Ankh
Bitte zeigen Sie, wie dies verwendet werden soll, es gibt nicht genug Informationen. Es gibt keinen Grund dafür, dass getValue ein Versprechen ist. Wenn es asynchron sein sollte, zeige es bitte. Es scheint, dass Sie versuchen, Versprechungen für etwas zu verwenden, für das sie nie gedacht waren. Erwägen Sie stattdessen die Verwendung von Observablen (z. B. RxJS). – estus
Führt Ihre asynchrone API ihren Rückruf einmal oder mehrmals aus? Versprechen sind Container für ** einmalige ** Werte, die in der Zukunft zurückgegeben werden. Beobachter führen ihre Rückrufe mehrmals aus. – georgeawg