Хорошие мое сомнение - следующее, я стараюсь получать data
с одной api
что в url
, я использую $http.get
, я это распределяю в $scope.ips
и он показывает мне данные в console.log()
соответствующий, сейчас проблема, который $http.get
это обещание, так что он возвращает тебе данные как только они доступны, но ввиду того, что он хотел заставить следующее печатать данные вне $http.get
, поскольку он мог бы делать это, так как я пробую делать это, и у меня выходит пустой объект, я знаю, что это простой пример, но коснулся мне в других проектах консультировать данные об одной api
, и начиная с данных об этой api
, консультировать снова данные в ней формируя код espagueti бесконечно.
var app=angular.module("app",[]);
app.controller("main",function($scope,$http){
$scope.ips={};
var url="http://ip-api.com/json/208.80.152.201";
$http.get(url)
.success(function(data){
$scope.ips=data;
console.log($scope.ips)
});
console.log($scope.ips);
})
Например, если он хотел сделать немного другой консультацию внутри той же такой консультации последовательно, также как и приди увеличивается размер кода, как он смог бы modularizarlo.
var app=angular.module("app",[]);
app.controller("main",function($scope,$http){
$scope.ips={};
var url="http://ip-api.com/json/208.80.152.201";
$http.get(url)
.success(function(data){
$scope.ips=data;
console.log($scope.ips)
var url2="XXXXXXXXXXXXXXXXX"+data.city;
$http.get(url2)
...
....
});
console.log($scope.ips);
})
То, что я понимаю, состоит в том, что ты нуждаешься в том, чтобы выполнить больше действий despuГ©s, получения неких ответов asГ-ncronas и действительно, как ты говоришь, выполняешь ли ты cГіdigo крепление ты покончишь с Кальбакк Ель для этого используются обещания. Я показываю тебе пример, как ты можешь сцеплять твои обещания для того, чтобы ты cГіdigo он не имел слишком много indentaciГіn.
Оставаясь ты cГіdigo despuГ©s получения ответа первой peticiГіn, бросил другую peticiГіn и возвратил обещание ($http.get ()) для того, чтобы следующий 'then' смог быть сцепленным второй peticiГіn.
var app=angular.module("app",[]);
app.controller("main",function($scope,$http){
$scope.ips={};
var url="http://ip-api.com/json/208.80.152.201";
$http.get(url)
.then(function(res){
$scope.ips=res.data;
console.log($scope.ips.isp) //wikimedia foundation
//var url2="XXXXXXXXXXXXXXXXX"+data.city;
var url2 = "http://ip-api.com/json/8.8.8.8"; //otro link de ejemplo pero aquí ya puedes usar la información del primer request.
return $http.get(url2); // otro request
}).then(function(resFromUrl2) { // información que proviene de otro request
console.log(resFromUrl2.data.isp); // google.
}); // podrías agregar mas promesas encadenadas con las respuestas anteriores.
});
оставил Тебе полный пример в codepen