如何使用angular和JavaScript承诺返回一些数据?
我正试图从本地存储中获取一些数据,但我想在如何使用angular和JavaScript承诺返回一些数据?,javascript,angularjs,local-storage,jquery-deferred,angular-promise,Javascript,Angularjs,Local Storage,Jquery Deferred,Angular Promise,我正试图从本地存储中获取一些数据,但我想在就绪时使用日期。比如: // this belongs to a Helper factory getData: function(){ var deferred = jQuery.Deferred(); setTimeout(function(){ var data = { description: localStorageService.get('descript
就绪时使用日期。比如:
// 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();
与我的示例类似,我只想在从localstorage获得描述
后返回数据
对象
我使用的是angularjs,所以我想在承诺解决后在我的视图中显示{{{data}}
。比如可以使用ng hide
或类似的东西
在任何情况下,我的问题都是关于设定承诺
有什么想法吗?好的$q
是angularjs中通常用于处理承诺的库,因为您正在从本地存储读取,这是一个同步操作,我不确定您为什么要返回承诺,在angularjs中通常是这样做的:
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);
})
getData().then(function(data){
console.log(data);
})
$timeout()返回一个承诺,因此它可以工作:
getData: function(){
return $timeout(function(){
return localStorageService.get('description'),
},3000);
}
用法:
getData().then(function(data){
console.log(data);
})
getData().then(function(data){
console.log(data);
})
旁注,如果您使用angular,请不要使用jQuery.Deferred(实际上,作为一般规则,不要使用jQuery.Deferred)$q是一个更好的promise库。@Retsam。我愿意接受任何好的解决方案为什么3000
,如果需要更长的时间来获取数据呢?@Patrioticcow 3000只是为了向您展示一段时间后承诺的内容将如何返回,正如我所说的,如果我没有弄错的话,从本地存储读取不是一个异步操作,行var data=localStorageService.get(“说明”),
无论如何,根据我的经验,应该会立即返回。你听说本地存储也不是异步的,但我的经验表明不同。可能是因为我的代码的方式不同setup@Patrioticcow我已经使用了一段时间,它可以同步处理所有事情。我建议取消超时。它所做的只是延迟所需的时间开始获取数据。