2016-06-01 3 views
1

Я использую API Instagram через Angular. Я потребляю его без проверки подлинности.Вызов API интраграммы без использования обратного вызова

Мой код выглядит ниже. Может ли кто-нибудь сообщить, что это лучший способ назвать этот API, используя обратный вызов. Есть ли лучший подход, используя обещания? Если да, то как это будет выглядеть? а также, как я могу добавить обработчик ошибок в этот код?

factory.js

app.factory('socialMedia', ['$http', function($http){ 
    return { 
     fetchInstagram: function(callback){  
      var url = "https://api.instagram.com/v1/users/*******/media/recent?client_id=*****&callback=JSON_CALLBACK"; 
      $http.jsonp(url).success(function(response){ 
       callback(response.data); 
      }); 
     } 
    } 
}]); 

controller.js

app.controller("instagramCtrl", ["socialMedia", function (socialMedia) { 
    instagramCtrl = this; 
    this.instagramPosts = []; 
    this.loading = true; 

    socialMedia.fetchInstagram(function (data){ 
     instagramCtrl.loading = false; 
     for(var i = 0; i < 5; i++){ 
      instagramCtrl.instagramPosts.push(data[i]); 
     }   
    }); 
}]); 

ответ

0

Не используйте callbacks, это прошлое. $http возвращает сервис пообещать объект, который является гораздо более удобным вариантом (обработка ошибок, обещание цепочки):

app.factory('socialMedia', ['$http', function($http){ 
    return { 
     fetchInstagram: function() {  
      var url = "https://api.instagram.com/v1/users/*******/media/recent?client_id=*****&callback=JSON_CALLBACK"; 
      return $http.jsonp(url).then(function(response) { 
       return response.data; 
      }); 
     } 
    } 
}]); 

Убедитесь, что вы возвращаетесь обещание от fetchInstagram метода.

Затем контроллер вы бы использовать его как это:

socialMedia.fetchInstagram().then(function(data) { 
    $scope.data = data; 
}); 
+0

ура! вот что я искал – phantom

+0

Могли бы вы показать, как должно выглядеть fucntion в контроллере? – phantom

+0

Конечно, проверьте обновленный ответ. – dfsq

Смежные вопросы