0

基本的に同じ方法で設定されたアプリにデータをロードするAngularJSサービスが必要ですが、機能するものと機能しないものがあります。

angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives'])
  .service('uniqueLists', function ($http) {
    console.log("Getting Unique Lists")
    var itemsToList = [
      'designer',
      'store',
      'category'
    ]
    var uniqueLists = {};
    var promise = (function(){
      console.log("Inside Function")
      for (var i = 0; i<itemsToList.length; i++){
        var item = itemsToList[i];
        uniqueLists[item] = [];
        $http.get('/api/uniques/' + item, { cache: true}).
        success(function (data){
          uniqueLists[item] = data.query;
          console.log(i + " out of " + itemsToList.length);
          if (i == itemsToList.length -1){
            return uniqueLists;
          }
        });
      };
    })();
    return promise;
})

私の主な問題は、$http呼び出しが非ブロッキングであることだと思います。たとえば、次のようconsole.log(i + " out of " + itemsToList.length)に表示されます。

3 out of 3
3 out of 3
3 out of 3

次に、私のアプリで次のuniqueListsように使用しようとすると:

function homeCtrl($scope, $location, uniqueLists, userInfo){
  uniqueLists.then(function(obj){
  // Do stuff
  });
}

エラーが発生しますTypeError: Object [object Object] has no method 'then'

これを修正する方法についてのアイデアはありますか? API呼び出しは$http.get問題なく機能するので、ブロッキング/非同期の問題だと思います。

4

1 に答える 1