在我走远之前,我希望有人能告诉我,我是否正确地处理了这个情况,或者是否有一个简单得多的方法,我只是错过了。我们有一个用AngularJS和web制作的网页。当用户试图访问某些页面时,我们现在正在处理他们的身份验证问题。我们有一个称为权限的模块,用于此的权限目前如下所示。
angular.module('permissions', []).factory('permissions', function (LoginApi, $q) {
//this is the variable which will hold the user, fetch it from th
我有AngularJs控制器:
function MyController($scope, $http) {
// as $http.get() is async, success() returns promise but
// I need the actual value 'items'
var promise = $http.get(...)
.success(function(response) {return response.items;});
<waitForAjaxCall>
$scope.items
我正在尝试在我的应用程序中使用promises,但是我不确定我做得是否正确。我使用promise的原因是,我的应用程序需要输入用户名,它需要在本地存储中找到它,如果它不存在,它会生成一个consloe.log(err)。
代码:
modalInstance.result.then(function(conUser) {
var promise = new Promise(function(resolve, reject) {
// do a thing, possibly async, then…
reso
我有一个angularjs控制器,里面有一个函数,如下所示:
$scope.searchCustomersBy = function(circleuuid) {
// get all the customers that belong to the circle
console.log("searchCustomersBy "+circleuuid);
console.log($scope.customersResults);
var buddies = [];
var results = [];
var promise = $h
我需要一个函数,它将返回一个布尔值。第一次调用此函数时,它应该从异步服务(返回承诺)加载值,然后缓存它。随后对该函数的调用应该返回缓存的值。问题是这个函数的调用者应该被阻塞,直到它得到一个值。在这种情况下,最好的解决方案是什么?如果函数以任何方式返回(即它的缓存与否),只需将需要阻塞的所有内容放在promise.then()中即可。如果这是一个很好的解决方案,那么在这两种情况下,我如何返回一个承诺(例如,当它缓存与否时)?
下面是一些更好地说明问题的代码:
function isSomethingStored() {
if(getFromBrowserStorage() != nu
我正在试着找出一个好的方式来说“做所有这些事情,但是在任何一个失败的情况下都可以保释”
我现在所拥有的:
var defer = $q.defer();
this
.load( thingy ) // returns a promise
.then( this.doSomethingA.bind( this ) )
.then( this.doSomethingB.bind( this ) )
.then( this.doSomethingC.bind( this ) )
.then( this.doSomethingD.bind( this ) )
我用的是一种期待承诺的方法。然而,有时promise会立即被解析。目前,如果立即解决了promise,我仍然会传递承诺,并使用以下方法:
function instantAction()
{
var defer = $q.defer();
// Actions that are performed instantly
defer.resolve();
return defer.promise;
}
如果有一种方法,直接返回解析,比如沿着return $q.resolve()的路线,跳过这两条额外的行?
我有一个有4个方法的工厂,但是当我调用其中任何一个方法时,我总是从第一个调用的方法返回数据集。
工厂代码:
app.factory('EnumLookupsSvc', function ($http) {
var factory = {};
var promise;
factory.getInvoiceTypes = function() {
if (!promise) {
// $http returns a promise, which has a then function, which also returns a promise