我一直在寻找这个问题的答案,但似乎找不到任何东西。我有一个服务,在第一个 block 中,我成功记录了一个 url,然后需要将其传递到我的 getData()
函数中。但它返回未定义,我尝试了下面的方法,并且尝试将第一个 $http.get
移动到我调用它的 Controller 中,并将第一个 $http.get 移动到getData()
函数。我这一切都错了吗?
di.service('testService', function($http) {
$http.get('https://us.api.data/tichondrius?locale=en_US&apikey=xxxxxxxx').
then(function(response) {
var urlToJsonFileUncut = response.data.files[0].url;
console.log(urlToJsonFileUncut);
urlToJsonFile = urlToJsonFileUncut.slice(7);
console.log(urlToJsonFile);
return urlToJsonFile;
});
this.getData = function(urlToJsonFile) {
console.log(urlToJsonFile);
return $http.get('http://localhost:1337/' + urlToJsonFile).
then(function(response) {
console.log(response.data.realms[0].name);
return response.data.realms[0].name;
});
}});
最佳答案
$http
是一个异步请求。因此,您需要将其链接到第一个请求中,以确保调用第二个请求时第一个响应的值可用。
di.service('testService', function($http) {
var getData = function () {
return $http.get('https://us.api.data/tichondrius?locale=en_US&apikey=xxxxxxxx').
then(function(response) {
var urlToJsonFileUncut = response.data.files[0].url;
console.log(urlToJsonFileUncut);
var urlToJsonFile = urlToJsonFileUncut.slice(7);
console.log(urlToJsonFile);
$http.get('http://localhost:1337/' + urlToJsonFile).
then(function(response) {
console.log(response.data.realms[0].name);
return response.data.realms[0].name;
});
});
}
return { getData: getData; }
});
关于javascript - 在AngularJS中的服务中的函数之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40308915/