2016-07-31 15 views
0

Ich möchte nur über $ http und versprechen Nutzung fragen, ich habe ein Problem zu verstehen, wie es richtig zu verwenden, habe ich einige Threads und Anleitungen zur Umsetzung bereit, ich kann missverstanden haben es ist aber hier, was ich getan habe. Ich halte es so einfach wie möglich, damit ich es begreifen kann.

this.getAll = function(){ 
    var details = []; 

    var deffered = $q.defer(); 

    var promise = $http.get('../test_data/patient_list.json'); 

    promise.then(function(response){ 
     $log.debug(response.data); 
     angular.copy(response.data, details); 
     details = response.data 
    }); 

    return details; 
}; 

während promise.then() Daten tun vorhanden ist, aber wenn ich versuche, es zu einem anderen Array zu kopieren, nachdem promise.then Anruf details leer. Woher? Im ein wenig verwirrt jetzt, kann jeder Punkt oder mir beibringen, wie man richtig Daten umgehen auf $http

Antwort

1
this.getAll = function(){ 
var details = []; 

var deffered = $q.defer(); 

var promise = $http.get('../test_data/patient_list.json'); 

return promise.then(function(response){ 
    $log.debug(response.data); 
    angular.copy(response.data, details); 
    details = response.data 
    return details; 
}); 

}; 

Sie haben das Versprechen dann wieder Details im Inneren des .then() Block zurückzukehren.

können Sie auch Folgendes tun:

this.getAll = function(){ 
return $http.get('../test_data/patient_list.json') 
    .then(function (response) { 
    return response.data 
    }); 
} 
+0

ohh aber wo kommt "DEFFERED" kommen in diesem Bild? – lemoncodes

+0

@lemoncodes deferred ist eine andere Möglichkeit, um Probleme zu behandeln, vor allem, wenn Sie einen Callback- oder einen nicht-Versprechen-Funktionsaufruf in ein Versprechen umwandeln möchten. Standardmäßig gibt $ http.get() ein Versprechen zurück, also brauchen wir nicht $ q.defer() –

+0

ja, ich habe den obigen Code ausprobiert, aber als ich die "Details" zurück gab, gab es das Versprechen zurück, ich erwartete das tatsächliche Daten zurückgegeben werden ?, ich glaube, ich missverstanden den zurückkehrenden Teil des Codes .. – lemoncodes