2016-09-14 5 views
2

저는 twitch.tv api를 사용하고 Angular $ 리소스 팩토리를 사용하고 있습니다. 사용하려는 엔드 포인트는 GET/channels/: 채널입니다. 내가 뭘 하려는지 각 배열 요소에 대한 채널을 얻을 수 있습니다. 나는/channels/users [1]를 시도했으나 이것이 잘못되었다는 것을 알고 있습니다. 배열의 모든 사용자에 대해 : 채널을 얻으려면 어떻게해야합니까? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까? 트 API는 CORS 요청을 지원하는

(function() { 
     angular.module('twitch', ['ngResource']) 

     .controller('TwitchController', ['$scope', 'TwitchAPI', function($scope, TwitchAPI) { 
     $scope.getAPI = function(){ 
      var users = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"]; 
      for(var i = 0; i < 8; i++){ 
      TwitchAPI.get({channel: users.i}); 
     } 
     } 
     $scope.online = []; 
     $scope.offline = []; 


    }]) 

    .factory('TwitchAPI', function TwitchAPIFactory($resource){ 
    return $resource('https://api.twitch.tv/kraken/channels/:channel', { callback: "JSON_CALLBACK" }); 
    }); 
})(); 

답변

0

첫째, 당신은 당신은 당신의 $resource '너무

return $resource('https://api.twitch.tv/kraken/channels/:channel', {}, { 
    get: { 
     method: 'GET', 
     headers: { 
      Accept: 'application/vnd.twitchtv.v3+json', 
      'Client-ID': 'Your client ID' 
     } 
    } 
}) 

당신이 정말로 JSONP를 사용하려는 경우, 당신이 할 수처럼 구성 할 수 JSONP를 사용할 필요가 없습니다 이 화장실하지 않습니다

return $resource('https://api.twitch.tv/kraken/channels/:channel', { 
    callback: 'JSON_CALLBACK', 
    api_version: 3, 
    client_id: 'your client ID' 
}, { 
    get: { 
     method: 'JSONP' 
    } 
}) 

같이해야 할 것이다, 그래서 t는 요청에 헤더 정보를 전송 한 번에 두 개 이상의 채널 (참조 : https://github.com/justintv/Twitch-API/blob/master/v3_resources/channels.md)를 얻을 수있는 방법이처럼 케이하지만 당신은 당신이

var promises = users.map(user => TwitchAPI.get({channel: user}).$promise); 

같은 약속의 간단한 배열을 만들 수 있습니다 병렬

에서 그렇게 할 수 있어야한다 그런 다음 그냥 $q 서비스를 주입하는 것을 잊지 마세요 $q.all

$q.all(promises).then(channels => { 
    angular.forEach(channels, channel => { 
     // access each channel's properties here 
     console.log('Channel name:', channel.display_name); 
    }); 
}); 

을 사용하여 해결하기 위해 모든 약속을 기다릴 수 있습니다.

+0

고마워요! 저는 아직 각도를 배우고 있으므로 해결책을 시도해 보겠습니다. – labanch

+0

어떻게 실제로 API에서 데이터를 가져 옵니까? 그것은 다음과 같을 것입니다 : user.url? @Phil – labanch

+0

@labanch 죄송합니다. 질문을 이해할 수 없습니다. 각 요청으로부터의 응답은'angular.forEach' 루프에서 사용되는'channel' 변수에서 이용 가능해야합니다. 다음과 같이 표시됩니다 ~ https://github.com/justintv/Twitch-API/blob/master/v3_resources/channels.md#get-channelschannel – Phil