2016-03-16 3 views
0

У меня есть следующая функция, где я выталкиваю все обещания в массиве, а затем использую функцию then, я имею в виду travserse, хотя обещания и получить массивы данных, которые имеют каждое обещание (услуга возвращает массив jsons)

 var getPP= function(){ 
         var promises = []; 
         angular.forEach($scope.myObjects, function(myObject) { 

          var urlPath = <someurl>+myObject.name; 
          var promise = $http({ 
           url : urlPath, 
           method: 'GET' 
          }); 
          promises.push(promise); 
         }); 

         $q.all(promises).then(function(data){ 
          for(j=0; j < data.length; j++){ 
           var jsonArray= []; 
           console.log('response = '+data[j]+' and j = '+j);--> 

**this log statement just prints a [object object] 
     even though the json array is pretty huge as returned by the service. What are these two objects?** 

           for (k = 0; k < data[j].length; k++) { 

    **--> It never gets here and does not logs anything below** 
            console.log('inside loop'); 
            console.log(data[j][k].id+data[j][k].empname); 
           } 
          } 
         }); 

Я получаю данные правильно? Любые входы, как мы можем это сделать? Прочитайте два комментария в коде для проблем, с которыми я столкнулся.

Спасибо!

EDIT 1 - JSON выглядит примерно так -

[{ 
    "id": 1, 
    "empname": "emp1" 
}, 
{ 
    "id": 2, 
    "empname": "emp2" 
}, 
{ 
    "id": 3, 
    "empname": "emp3" 
}] 

EDIT 2: Я также попытался изменить мое обещание определение переменной, как показано ниже, но такой же вопрос

var promise = $http({ 
        url : urlPath, 
        method: 'GET' 
       }).success(function(data, status){ 
        defer.resolve(data); 
       }) 
        .error(function(data, status) { 
         defer.reject(status); 
        }); 

EDIT 3: В соответствии с ваше предложение и использование формата переменной обещания EDIT 2 - вот вывод в консоли, когда я использую следующие два консольных оператора:

console.log ('response =' + JSON.stringify (данные [j]) + 'и j =' + j);

Консоль вывода:

response = {"data":[{"id": 1,"empname": "emp1"},{"id": 2,"empname": "emp2"},{"id": 3,"empname": "emp3"}],"status":200,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"http://localhost:8091/api/types?isoCode=USA&groupName=AdvisorySpeedLimit2_40","headers":{"Accept":"application/json, text/plain, */*","X-Requested-With":"XMLHttpRequest"},"requestTimestamp":1458169519915,"responseTimestamp":1458169520190},"statusText":"OK"} 
+0

Помимо недостающих 'var' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' Покажите нам, как выглядит JSON, который '$ http' получает для каждого имени, и мы можем сказать вам [как правильно пройти его] (http://stackoverflow.com/q/11922383/1048572). – Bergi

+0

Добавлено edit 1 для json – Tisha

+0

Возможно, вы захотите использовать 'console.log (данные [j] [k] .id + data [j] [k] .empname);' – Bergi

ответ

0

Спасибо за все ваши предложения @Bergi!

data[j].data[k] сделал трюк и отобразил правильные данные.

+0

Пожалуйста, не добавляйте «спасибо» в качестве ответа. Вместо этого ** [принять ответ] (http://stackoverflow.com/help/accepted-answer) **, который вы нашли наиболее полезным. - [Из обзора] (/ review/low-quality-posts/11660052) –

+0

@QPaysTaxes: Они благодарны за мои комментарии, а не за ответ. Самоответствие (и признание того, что после его получения) в порядке. – Bergi

+0

@ Bergi Правильный ответ - написать ответ. Автоответчик в порядке, но «эта вещь работала для меня» не является хорошим ответом; «эта вещь работала, и вот почему» есть, и вы можете это написать. –

Смежные вопросы