如何使用angular和JavaScript承诺返回一些数据?

时间:2014-08-07 04:44:52

标签: javascript angularjs local-storage jquery-deferred angular-promise

我正在尝试从本地存储中获取一些数据,但我希望使用日期ready。类似的东西:

// this belongs to a Helper factory
getData: function(){
        var deferred = jQuery.Deferred();
        setTimeout(function(){
            var data = {
                description: localStorageService.get('description'),
            };
            deferred.resolve()
        }, 10);
        return deferred.promise();
  },

// I set it up so that in the controller I can do
// $scope.data = Helper.getData();

与我的示例类似,我只想在data对象从localstorage获得description之后返回

我正在使用angularjs,所以一旦承诺得到解决,我想在我的视图中显示{{data}}。比如使用ng-hide或类似的东西。

无论如何,我的问题是关于建立这个承诺。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

$ timeout()返回一个promise,所以这个有效:

getData: function(){
   return $timeout(function(){
       return localStorageService.get('description'),
   },3000);
}

用法:

getData().then(function(data){
   console.log(data);
})

答案 1 :(得分:3)

$q是通常用于处理angularjs中的promise的库,因为你从本地存储中读取并且是同步操作我不知道你为什么要返回一个promise ,通常以角度方式完成的方式如下:

getData: function(){
   var deferred = $q.defer();
   $timeout(function(){
     var data=localStorageService.get('description'),
     deferred.resolve(data);
   },3000);
   return deferred.promise;
}

用法:

getData().then(function(data){
   console.log(data);
})