Ich bin ein Javascript-Anfänger und versucht Versprechungen und Asynchronität zu verstehen, aber es war hart.Warten auf Service beim Aufruf der Funktion im Controller
Ich habe diese Funktion in meinem Dienst:
`main.service.js
function getTableauUrl() {
$http.get(TABLEAU_URLS).then(function (response) {
var urls = response.data;
getUser().then(function (data) {
var company = data.account.name;
for (var i=0; i< response.data.length; i++){
if (urls[i].name === company){
return urls[i].url;
}
}
}, function errorGetUser(error) {
$log.info(error);
});
}
);
}
Diese Funktion funktioniert gut, wenn ich es sofort, aber wenn ich nenne es von einem Controller:
function MainController ($log, $rootScope, $scope, $sce, $q, $state,
mainService) {
var url = mainService.getTableauUrl();
}
Dann ist die Variable URL nicht definiert. Ich weiß, dass es wegen des asynchronen Verhaltens von Javascript ist, aber versuchte, es zu ändern, um ein Versprechen hinzuzufügen, aber ich lese einige Tutorials und ich habe es nicht funktionieren lassen.
Ich habe versucht, was Sie gesagt haben, aber es ist nach wie vor der Rückkehr nicht definiert. – ares1986