我的服务是:
myApp.service('userService', [
'$http', '$q', '$rootScope', '$location', function($http, $q, $rootScope, $location) {
var deferred;
deferred = $q.defer();
this.initialized = deferred.promise;
this.user = {
access: false
};
this.isAuthenticated = function() {
this.user = {
first_name: 'First',
last_name: 'Last',
email: 'email@address.com',
access: 'institution'
};
return deferred.resolve();
};
}
]);
我config
通过以下方式在我的文件中调用它:
myApp.run([
'$rootScope', 'userService', function($rootScope, userService) {
return userService.isAuthenticated().then(function(response) {
if (response.data.user) {
return $rootScope.$broadcast('login', response.data);
} else {
return userService.logout();
}
});
}
]);
但是,它抱怨这then
不是一个功能。我不退还已解决的承诺吗?
从您的服务方式:
function serviceMethod() {
return $timeout(function() {
return {
property: 'value'
};
}, 1000);
}
在您的控制器中:
serviceName
.serviceMethod()
.then(function(data){
//handle the success condition here
var x = data.property
});
问题内容: 我正在努力克服JavaScript(特别是AngularJS)中的承诺。 我在服务中有一个函数,我们称它为,它检查是否已加载一些数据。如果有,我只希望它返回,否则,我们需要加载数据并返回promise: 我有另一个函数,然后调用如下函数: 我在这里的问题是,如果我们不需要在函数中加载数据,则不会返回promise,因此在其他函数中不会调用the 。这里的方法应该是什么-基本上,如果我们
问题内容: 我将慢速的WebSockets服务器包装在AngularJS服务中,然后从我的控制器调用该服务。如果我将回调链接到回调上,则一切正常,所有UI均异步更新。 当我尝试用来清理一团糟的回调时,似乎我的延迟请求从未被调用。我熟悉从Python的Twisted派生的概念,因此我认为从概念上讲一切都应该起作用-但事实并非如此。 这是我能想到的最短的例子,慢速的WebSockets服务器是使用se
本文向大家介绍AngularJS 中的Promise --- $q服务详解,包括了AngularJS 中的Promise --- $q服务详解的使用技巧和注意事项,需要的朋友参考一下 先说说什么是Promise,什么是$q吧。Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered。 什么是Promise 以前了解过Ajax的都能体
问题内容: 假设这样的服务: 所以应该这样使用: 因此,当我发送GET请求时,一切正常,构建了ur + params: 问题,为什么我有: 如果我的GET请求导致从服务器返回的json- response:那么我希望我的数据被填满。 我是否应该以某种方式等待诺言已经准备就绪/已解决? 问题答案: 不会立即返回您的实际数据。当ajax返回时,它返回的内容将保存您的数据。在那个()上,您可以注册一个附
问题内容: 根据Michal Charemza帖子编辑。 我有一个代表angularui模态对话框的服务: 如果用户单击对话框中的“确定”,则在调用delete方法时将执行。 问题是我无法对此进行单元测试。 这是我的考验。我已经正确注入了q服务,但是我不确定应该从间谍那里返回什么… 但是我正在接受。这意味着…部分没有执行。我想念什么? 问题答案: 要模拟返回承诺的函数,它还需要返回承诺,然后需要将
问题内容: 我有使用,它可以进行远程调用,并返回promise: 要对我进行单元测试,需要模拟,以便其方法返回promise。这是我的方法: 从上面可以看到,我的模拟的定义取决于,我必须使用来加载。此外,应该在中进行注入模拟,这应该在之前进行。但是,更改模拟后,其值不会更新。 正确的方法是什么? 问题答案: 我不确定为什么您的方法不起作用,但是我通常使用该函数来完成。像这样: 还要记住,您将需要调