Staram się zrozumieć obietnice w JavaScript (w szczególności AngularJS).Natychmiast zwróć rozstrzygniętą obietnicę za pomocą AngularJS
Mam funkcję w usłudze, nazwijmy ją fooService
, która sprawdza, czy załadowaliśmy jakieś dane. Jeśli tak, po prostu chcę go do powrotu, a jeśli nie mamy, musimy załadować dane i powrócić obietnicę:
this.update = function(data_loaded) {
if (data_loaded) return; // We've loaded the data, no need to update
var promise = Restangular.all('someBase').customGet('foo/bar').then(function(data) {
// Do something with the data here
}
return promise;
}
mam inną funkcję, która następnie wywołuje funkcję update
o fooService
jak tak :
fooService.update(data_loaded).then(function() {
// Do something here when update is finished
})
Mój problem jest to, że jeśli nie trzeba ładować dane w funkcji update
, obietnica nie zostanie zwrócony, więc .then()
nie nazywa w moim innej funkcji. Jakie powinno być podejście? W zasadzie chcę zwrócić rozstrzygniętą obietnicę natychmiast z funkcji update()
, jeśli nie musimy pobierać danych z połączenia Restangular?
Dzięki za napiwek. Zawsze brakowało mi składni "Q (initialVal)" [Kris Kowal's Q] (https://github.com/kriskowal/q) i powinienem znać '$ q.when (dane)' może zrobić tę samą sztuczkę. – runTarm