Я пытаюсь создать простое приложение для твитов, но мне сложно выполнить функцию обновления.Невозможно перебрать переменные цикла ответа API/доступа
$scope.refreshTimeline = function() {
for (x = 0; x < $scope.tweetsarray.length; x++){ // loop through the twitter feeds
twitterService.getLatestTweets($scope.tweetsarray[x].name).then(function(data) {
$scope.tweetsarray[x].tweets = data; //update each
});
}
}
и getlatesttweets функционировать
getLatestTweets: function (name) {
//create a deferred object using Angular's $q service
var deferred = $q.defer();
var promise = authorizationResult.get('https://api.twitter.com/1.1/search/tweets.json?q='+name+'&count=8').done(function(data) {
//when the data is retrieved resolved the deferred object
deferred.resolve(data)
});
//return the promise of the deferred object
return deferred.promise;
}
Так вот вопросы, я с
1) значение х (глобальная переменная, неиспользованными где-нибудь еще) в .then (функция (данные), по-видимому, отличается от любого другого в цикле, и она, похоже, не увеличивается. Я попытался использовать $ scope.x или сделать его переменной функции в цикле. Обновление работает, если я жестко привязываю его к только обновить [0] в tweetsarray, но [x] возвращает отдельное значение.
2) Я предполагаю, что есть какая-то проблема с попыткой выполнить функцию с отсроченными обещаниями. Есть ли способ, которым я могу убедиться в каждом прохождении цикла, что обещание возвращается, прежде чем продолжить?
Спасибо, что я ценю вашу помощь!
-Dave
цикл работает синхронно, и ваш вызов ajax внутри цикла асинхронный ..., просто выполните .. 'function setTweets (x) {// youcode ...}' и вызовите 'for (x = 0; x < $ scope.tweetsarray.length; x ++) {setTweets (x); } 'с этим мы создаем локальную копию' x' для каждого вызова ajax и его обратного вызова в отличие от общей переменной 'x' в вашем случае (которая закончилась бы до вашего обратного вызова) ... – PSL
это сработало ! благодаря! – DaveS