Angular 变量填充后的服务调用
Angular Service call after variable population
我正在尝试创建一个 angular 服务,它包含一个变量,该变量的值将在另一个服务调用的结果之后设置。这是代码:
angular.module("someApp",[]).service("someServiceName", function() {
var myVar = undefined;
this.get = function() {
if (myVar) {
return myVar
} else {
console.error('Error text');
}
}
var init = function () {
anotherService.call().then(function (result) {
myVar = result;
});
};
init();
});
当我在应用程序加载后第一次调用 someServiceName.get() 时 return 什么都没有(因为 myVar 尚未填充)。但是在下一个服务中调用它 returns value if myVar 变量。
所以,我的问题是如何 return myVar 在 someServiceName.get() 调用但在 运行 init()先?
也许您在 anotherService.call() 结束之前调用了 someServiceName.get();这会给你 undefined.
关于:
angular.module("someApp",[]).service("someServiceName", function($q) {
var deferred = $q.defer();
this.get = function() {
anotherService.call()
.then(function (result) {
if (result) {
deferred.resolve(result);
} else {
deferred.reject('Error text');
}
}, function (error) {
deferred.reject('AnotherService error');
});
return deferred.promise;
}
});
在这种情况下,每次要获取他的值时,您都会调用 anotherService。
我正在尝试创建一个 angular 服务,它包含一个变量,该变量的值将在另一个服务调用的结果之后设置。这是代码:
angular.module("someApp",[]).service("someServiceName", function() {
var myVar = undefined;
this.get = function() {
if (myVar) {
return myVar
} else {
console.error('Error text');
}
}
var init = function () {
anotherService.call().then(function (result) {
myVar = result;
});
};
init();
});
当我在应用程序加载后第一次调用 someServiceName.get() 时 return 什么都没有(因为 myVar 尚未填充)。但是在下一个服务中调用它 returns value if myVar 变量。 所以,我的问题是如何 return myVar 在 someServiceName.get() 调用但在 运行 init()先?
也许您在 anotherService.call() 结束之前调用了 someServiceName.get();这会给你 undefined.
关于:
angular.module("someApp",[]).service("someServiceName", function($q) {
var deferred = $q.defer();
this.get = function() {
anotherService.call()
.then(function (result) {
if (result) {
deferred.resolve(result);
} else {
deferred.reject('Error text');
}
}, function (error) {
deferred.reject('AnotherService error');
});
return deferred.promise;
}
});
在这种情况下,每次要获取他的值时,您都会调用 anotherService。