当前位置: 首页 > 知识库问答 >
问题:

无法通过API响应/访问循环变量进行循环

华宏逸
2023-03-14

我试图建立一个简单的Twitter提要应用程序,但我很难实现刷新功能。

    $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) 中的x(全局变量,未在任何其他位置使用)的值。然后(函数(数据)似乎与循环中的其他任何地方不同,并且似乎没有增加。我尝试使用$scope.x或将其作为循环中的函数变量。如果我在tweetsarray中将其硬编码为仅刷新[0],则刷新有效,但[x]返回一个单独的值。

2) 我猜尝试循环通过一个延迟promise的函数会有一些问题。是否有一种方法可以确保在每次通过循环时,promise都会在继续之前返回?

谢谢,谢谢你的帮助!

-戴夫

共有2个答案

督灿
2023-03-14

你可以做这样的事

 $scope.refreshTimeline = function() {
   for (x = 0; x < $scope.tweetsarray.length; x++){ // loop through the twitter feeds
      var data;
      data.tweet = $scope.tweetsarray[x];
      twitterService.getLatestTweets($scope.tweetsarray[x].name).then(function(data) {
      $scope.tweetsarray[$scope.tweetsarray.indexof(data.tweet)].tweets = data; //update each
    });
   }
 }

这意味着,将数组元素传递给异步任务,它在响应中返回,然后使用它查找数组索引并更新元素

秦滨海
2023-03-14

由于javascript的闭包行为,它将在从服务回调时获取最新的x值。所以试着这样做。

 $scope.refreshTimeline = function() {
  for (var x = 0; x < $scope.tweetsarray.length; x++){ 
    storeTweets(x);       
  }
 }

 function storeTweets(x){
    twitterService.getLatestTweets($scope.tweetsarray[x].name).then(function(data) {
      $scope.tweetsarray[x].tweets = data; //update each
    });
 }
 类似资料:
  • 我正试图绘制一个颜色梯度,我希望它沿一个轴均匀分布(在下面的图片中,由角度定义) 当我使用命令时,绘图匹配所需的梯度方向,但沿着它不均匀(沿着圆的点之间形成各种三角形) 这是密码

  • 我的代码是: 这似乎不会在我的变量列表中循环。有什么想法吗?提前致谢

  • 问题内容: 如何在Java的do-while循环内部访问变量? 下面的代码写出一个值,直到输入的值不在0到10之间为止。 这是我的代码: 只要输入在0到10之间,循环就会继续要求输入。一旦输入其他数字,循环就会终止并显示所有输入数字的总数。 问题答案: 尝试一下(在循环外将变量声明为a):

  • 问题内容: 因此,当我运行此代码时,我的JFrame变得无响应。我设法将其追溯到gameLoop()下的while循环。无论使用其中调用Thread.sleep()的delay(1000 / FRAMERATE),它都不允许键或鼠标侦听器执行其工作。 下面的完整代码,gameLoop()中存在问题 如果很重要,程序将从此处开始,然后转到Game类 可能无关紧要,但这是github存储库的插件htt

  • 问题内容: 我有以下代码可以SSH到节点并从其他设备中找到RSSI。 bot_ipv6是ssh到的ipv6地址的列表,脚本使用pexpect来ssh。 数据现在包含该设备的输出。 我想浏览数据并仅获取地址及其对应的RSSI。当命令可以在本地运行并输出到文件时,此代码有效: 匹配和匹配行是在其中定义的函数,在其他地方则在文件中查找以将字符与所要查找的字符进行匹配。 我的问题是我不知道如何将数据输出到

  • 问题内容: 我有一个整数数组。 我想为每个X创建一个沿Y迭代的线程。我不知道如何将适当的X值传递给每个线程。 本质上我希望能够做到 任何帮助,将不胜感激 问题答案: 只值可以的方法和本地匿名内部类内被捕获。您需要按以下方式更改代码: