2017-03-24 36 views
0

我正在使用Parse數據,但交易是,我想要返回變量ParseUserArray,但在它傳遞成功promisse之後。我想知道我該怎麼做。

var UserWs = angular.module('UserWs', []); 

    UserWs.service('UserWsService', ['parseInit', function(parseInit){ 
     var service = this; 
      this.getUserAtParse = function(id){ 
       var user = Parse.Object.extend("User"); 
       var query = new Parse.Query(user); 
        var parseUserArray = []; 
        query.find({ 
         success: function(anUser) { 
          for (var i = 0; i < anUser.length; i++) { 
           var newUser = new User(anUser[i]); 
           parseUserArray.push(newUser); 
          } 
          console.log(parseUserArray); 

         } 

        }); 

        var User =function(anUser){ 
         this.id = anUser.id; 
         this.name = anUser.get("name"); 
         this.email = anUser.get("username"); 
         this.company = anUser.get("company"); 
        } 
      return parseUserArray; 


       }; 

在此先感謝:)

+0

http://stackoverflow.com/questions/14220321/how-do-i-return異步調用的響應 –

+0

但我沒有使用ajax –

+0

爲什麼不在'$ timeout'內部調用'UserWsService.getUserAtParse'? – lealceldeiro

回答

2

您可以使用promise這個 - $q服務

var UserWs = angular.module('UserWs', []); 

UserWs.service('UserWsService', ['$q', 'parseInit', function($q, parseInit) { 
    var service = this; 
    this.getUserAtParse = function(id) { 
    var defer = $q.defer(); 
    var user = Parse.Object.extend("User"); 
    var query = new Parse.Query(user); 
    var parseUserArray = []; 
    query.find({ 
     success: function(anUser) { 
     for (var i = 0; i < anUser.length; i++) { 
      var newUser = new User(anUser[i]); 
      parseUserArray.push(newUser); 
     } 
     console.log(parseUserArray); 
     defer.resolve(parseUserArray); 
     } 

    }); 

    var User = function(anUser) { 
     this.id = anUser.id; 
     this.name = anUser.get("name"); 
     this.email = anUser.get("username"); 
     this.company = anUser.get("company"); 
    } 
    return defer.promise; 
    } 
}]); 

UserWs.controller('sampleCtrl', ['$scope', 'UserWsService', function($scope, UserWsService) { 
    UserWsService.getUserAtParse(SOME_ID).then(function(resultArray) { 
    //logic here 
    }); 
}]); 
+0

我真的不知道這存在hahaha,我會看看文檔,並嘗試你的解決方案呢!謝謝 –

+0

這真的使一切工作!再次感謝 –

相關問題