2016-11-29 13 views
0

申し訳ありませんが、Angularを初めて使用しています。そして、これはおそらくダンプの質問です。 私は、JSONデータ構造を次ています

[ 
    {"id": "1", "name": "Alan", "location": "US"}, 
    {"id": "2", "name": "Bella", "location": "UK"} 
] 

私がしているサービスを、次の:私は$http.getからいくつかの非常に不便なオブジェクトを取得しています

let users = getData(); 

    function getUsers() { 
     return users; 
    } 
    function getData() { 
     return $http 
      .get("./data/users.json") 
      .then(function(response) { 
       return response.data; 
      }); 
    } 
    function addUser(user) { 
     let id = users.$$state.value[users.$$state.value.length - 1].id++; 
     users.$$state.value.push({ 
       // adding user 
     }) 
    } 

。それを配列表現に戻す方法は?

+1

可能な重複http://stackoverflow.com/questions/14220321/how-do-i-return-非同期呼び出しからの応答) – Daedalus

+0

あなたは試してみました:** return jQuery.parseJSON(response.data); **? – Cecilia

+0

私はjQueryを使用していません。角度は –

答えて

3

ここでの問題は、promisesがどのように機能するかについての不足であり、$httpコールは応答を返さないが、その要求の約束は非同期です。非同期タスクがあり、コールバックをその解決にサブスクライブする必要がある場合、このシナリオではプロミスが正確に使用されます。とにかく

、代わりに直接返され、あなたが約束してthen(fn)方法で与えられる成功話題にコールバックを購読し$http.get().then ...$であなたのチェーンの約束から返されたデータを使用して変数を養う必要があります約束を使用しようと。例えば

let users = []; 

getData() 
    .then(function (data) { 
     users = data; 
    }); 

function getUsers() { 
    return users; 
} 

function getData() { 
    return $http 
     .get("./data/users.json") 
     .then(function(response) { 
      return response.data; 
     }); 
} 

function addUser(user) { 
    let id = users.$$state.value[users.$$state.value.length - 1].id++; 
    users.$$state.value.push({ 
      // adding user 
    }) 
} 
[?私は非同期呼び出しからの応答を返すにはどうすればよい](の
関連する問題