Консультируйся относительно обещаний в AngularJS (Угловой 1)

Хорошие мое сомнение - следующее, я стараюсь получать 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);


})
2
задан 28.08.2019, 23:52
1 ответ

То, что я понимаю, состоит в том, что ты нуждаешься в том, чтобы выполнить больше действий 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

2
ответ дан 03.12.2019, 18:57

Теги

Похожие вопросы