Ich bin neu in AngularJS. Wie kann ich die Antwort von "response.data" als eine typische Funktion zurückgeben? Da $http
eine Zusage generiert, gibt die Funktion beim Beenden der Funktion die Serverantwort nicht zurück.
In meinem Controller habe ich:
this.message2 = function() {
$http({
url : 'dataset_of_model',
method : "POST",
data : {
'experiment' : 'rcp85',
'model' : 'HadGEM2-ES',
'frequency' : 'day'
}
}).then(function(response) {
console.log('qui');
console.log(response.data);
return response.data;
}, function(response) {
//fail case
console.log(response);
console.log(fallito);
return response;
});
};
Wenn ich tun:
this.message2 = function() {
var = temp;
$http({
url : 'dataset_of_model',
method : 'POST',
data : {
'experiment' : 'rcp85',
'model' : 'HadGEM2-ES',
'frequency' : 'day'
}
}).then(function(response) {
console.log('qui');
console.log(response.data);
temp = response.data;
}, function(response) {
//fail case
console.log(response);
console.log(fallito);
return response;
});
return temp;
};
Die Rückkehr temp
die Daten nicht haben, weil es vor Daten zurückgibt, auch wenn ich zum Beispiel warten 10 Sekunden vor der Rückkehr.
Wie kann ich Daten synchron zurückgeben?
Danke !!
Ich glaube, es gibt keinen Weg. JavaScript ist single-threaded und kann es sich nie leisten, zu stoppen und auf die Fertigstellung einer bestimmten Funktion zu warten. –
Mögliches Duplikat von [Wie gebe ich die Antwort von einem asynchronen Anruf zurück?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –