Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angular.foreach在发送get请求时给我重复数据_Javascript_Angularjs - Fatal编程技术网

Javascript angular.foreach在发送get请求时给我重复数据

Javascript angular.foreach在发送get请求时给我重复数据,javascript,angularjs,Javascript,Angularjs,我的代码正在工作,但它给了我一个重复的数据,我似乎找不到解决方案 这是我的代码。 vm.peoplev2值 vm.peoplev2 = [{'userId': 'admin'},{'userId':'jonas'},{'userId':'maria'},{'userId':'johncena'},{'userId':'lorenz'}]; function getCurrentImg(data) { return $http.get('/api/img/' + data ); } 控制

我的代码正在工作,但它给了我一个重复的数据,我似乎找不到解决方案

这是我的代码。

vm.peoplev2值

vm.peoplev2 = [{'userId': 'admin'},{'userId':'jonas'},{'userId':'maria'},{'userId':'johncena'},{'userId':'lorenz'}];
function getCurrentImg(data) {
   return $http.get('/api/img/' + data );
}
控制器

angular.forEach(vm.peoplev2, function (value, key) {
      console.log(value.userId);
      uploadService.getCurrentImg(value.userId).then(function (data) {
        if (value.userId === data.data.user) {
          vm.img.push(data.data);
          console.log(vm.img);
        }
   });
});
上传服务

vm.peoplev2 = [{'userId': 'admin'},{'userId':'jonas'},{'userId':'maria'},{'userId':'johncena'},{'userId':'lorenz'}];
function getCurrentImg(data) {
   return $http.get('/api/img/' + data );
}
路线

router.get('/img/:id', function (req, res) {
    Img.findOne({ user: req.params.id }, function (err, img) {
        if (err) {
            res.status(404).send(err);;
        } else {
            res.status(200).send(img);
        }
    });
});
这是vm.img(对象)中的结果:


这是乔纳斯和洛伦兹的2倍。如何解决此问题?

异步操作和循环可能无法预测。试着做以下几点:

(将服务中的
$timeout
替换为
$http
调用)

这将创建一个承诺数组,并等待所有承诺都执行,然后返回最终结果


您的plnkr没有显示任何内容。我会试着测试你的答案。谢谢。打开控制台并运行。这是一个演示,不是一个完整的复制。我认为这击败了显示已经推送的数据的想法?不妨一次性获取所有img数据?关键是使用
$q.all
而不是循环。其余的没有意义。