Javascript 在控制器中调用函数时等待服务
我是一名Javascript初学者,试图理解承诺和异步,但这很难 我的服务中有以下功能: `main.service.jsJavascript 在控制器中调用函数时等待服务,javascript,angularjs,Javascript,Angularjs,我是一名Javascript初学者,试图理解承诺和异步,但这很难 我的服务中有以下功能: `main.service.js function getTableauUrl() { $http.get(TABLEAU_URLS).then(function (response) { var urls = response.data; getUser().then(function (data) { var company = data.account.
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);
});
}
);
}
那么变量url是未定义的。我知道这是因为Javascript的异步行为,但我尝试修改它以添加承诺,但我读了一些教程,但没有成功。您没有从该方法返回任何内容。尝试返回
$http.get
function getTableauUrl() {
return $http.get(TABLEAU_URLS).then(...);
}
然后在控制器中调用它,如下所示:
function MainController ($log, $rootScope, $scope, $sce, $q, $state, mainService) {
var globalUrl;
mainService.getTableauUrl().then(function(url) {
globalUrl = url;
});
}
我试过你说的,但还是没有定义。
function MainController ($log, $rootScope, $scope, $sce, $q, $state, mainService) {
var globalUrl;
mainService.getTableauUrl().then(function(url) {
globalUrl = url;
});
}