【问题标题】:compare to object angular js比较对象角度js
【发布时间】:2016-03-07 16:49:33
【问题描述】:

我从 api json 收到的 AngularJS 有问题,json 包含一个 prod url 和 url prerpod 我会调用这些 API 以检索一个新的 json,然后比较结果以验证与问题相同的是我有一个 200 的 API 测试,我该怎么做。先感谢您 ps 我认为该方法的测试对象等于。

我有 100 个这样的对象:

{
    "ID": "1",
    "URL_preprod": "url1",
    "Preprod_bis": "url2",
    "prod": "url3",
}

我需要检查每个对象的调用结果是否相等。

  function callAtTimeout() {
   if ($scope.preprod && $scope.preprodBis) {
      angular.equals($scope.preprod,$scope.preprodBis);
      $scope.msg = "equals";
      }}



   $scope.test = function() {
 if (tnrArray) {
 for (var i = 0; i < tnrArray.length; i++) {

  var urlPreprod = tnrArray[i].URL_preprod;
    console.log(urlPreprod);
  $http.get(urlPreprod).success( function(response) {
    $scope.preprod = response;
    console.log(response);
   });

   var urlPreprodBis = tnrArray[i].Preprod_bis;
   console.log(urlPreprodBis);
   $http.get(urlPreprodBis).success( function(response) {
     $scope.preprodBis = response;
     console.log(response);
    });
     $timeout(callAtTimeout, 3000);
}

【问题讨论】:

    标签: angularjs json api call


    【解决方案1】:
    var response1;
    
    $http.get("/your/url").then(function(response) {
        response1 = response;
        return $http.get(response.prodUrl);
    }).then(function(prodResponse) {
        console.log(prodResponse);
        console.log(_.isEqual(response1 , prodResponse));  // uses lodash
    }).catch(function(badResponse) {
        console.log("oops something went wrong", badResponse);
    })
    

    这应该可行 - lodash 用于检查是否相等

    为 200 个 URL 异步执行此操作 ...

    var urlList = ['/path/url1','/path/url2','/path/url3'];
    
    angular.forEach(urlList, function(url) {
    
        var response1;
    
        $http.get(url).then(function(response) {
            response1 = response;
            return $http.get(response.prodUrl);
        }).then(function(prodResponse) {
            console.log(prodResponse);
            console.log(angular.equals(response1 , prodResponse));
        }).catch(function(badResponse) {
            console.log("oops something went wrong", badResponse);
        })
    });
    

    【讨论】:

    • 最好使用内置 angular.equals(),它不会比较 angular 内部添加的属性
    • 我怎样才能为 200 个 url 做这个?
    • 更新的答案见上文,请注意这将异步执行。如果您需要同步或以其他方式完成,您需要解释更多您需要的内容。
    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2018-02-28
    • 2011-02-22
    相关资源
    最近更新 更多