Я новичок в AngularJS и экспериментирую с AngularJS с Twitch API.AngularJS - Выполняется ли код контроллера по строкам?
У меня есть список каналов, которые меня интересуют, определяемые как var channels
.
Затем я использую функцию $http.get
для прохождения через другой массив, twitchList.channels
, который содержит адреса API, которые я должен назвать.
(function() {
var app = angular.module('twitchList', []);
app.controller('twitchController', ['$http', function($http){
var twitchList = this;
twitchList.channels = [];
var channels = ["freecodecamp", "storbeck", "terakilobyte", "habathcx","RobotCaleb","thomasballinger","noobs2ninjas","beohoff", "MedryBW"];
for (var i = 0; i < channels.length; i++) {
twitchList.channels.push({
name: channels[i],
api: 'https://api.twitch.tv/kraken/streams/' + channels[i],
})
}
var data_list = [];
for (var j = 0; j < twitchList.channels.length; j++) {
$http.get(twitchList.channels[j].api).success(function(data){
data_list.push(data);
})
}
// Issue arises here!
console.log(data_list);
console.log(data_list.length);
}]);
})();
В API вызовы, кажется, работает отлично, однако, мне нужно, чтобы получить результаты вызова API в массив, называемый data_list
. Теперь, когда я печатаю data_list
и data_list.length
, происходит то, что data_list.length
всегда возвращает 0, а data_list
иногда заполняется (это означает, что это либо массив размера 0, либо массив 9 размера). Несмотря на то, что свойство массива имеет длину 9, но вызов .length
всегда дает 0.
Это позволяет мне думать, что код контроллера не выполняется по строкам? Или что-то не так с моей логикой?
Может ли кто-нибудь дать мне указатель? Благодаря
$ HTTP является асинхронным и data_list не будут поданы с вашими данными с сервера, следовательно, его возвращает 0, вы можете утешить его внутри успеха обратного вызова $ HTTP –
Код выполняется асинхронной data_list.push (данные) ; произойдет после console.log. –
@shushanthp Ну, 'data_list' доступен в области видимости, но вы правы, что никакие данные не нажимаются до тех пор, пока не будет вызван обратный вызов успеха. – jensgram