在angularjs中,使用promise创建http服务
当我点击应用程序特定页面的url时,我想使用api调用检查是否允许加载该页面。如果是,则加载该页面,否则重定向到应用程序的不同页面。为此,我承诺使用http服务。在这里,http服务没有等待http响应在angularjs中,使用promise创建http服务,angularjs,Angularjs,当我点击应用程序特定页面的url时,我想使用api调用检查是否允许加载该页面。如果是,则加载该页面,否则重定向到应用程序的不同页面。为此,我承诺使用http服务。在这里,http服务没有等待http响应 starter.service("verifywallet", ['$http', '$q', function($http, $q) { this.getdata = function() { var url = baseAPIUrl + "IsEnableWallet/";
starter.service("verifywallet", ['$http', '$q', function($http, $q) {
this.getdata = function() {
var url = baseAPIUrl + "IsEnableWallet/";
var def = $q.defer();
var IsEnableWallet = undefined;
if (IsenableWallet) {
$http({
method: "GET",
url: url
}).then(function(response) {
if (response.data.status.success == true) {
var IsenableWallet = response.data.status.Isenable;
def.resolve(IsenableWallet);
} else {
def.resolve(false);
}
})
IsenableWallet = def.promise;
}
return $q.when(IsenableWallet);
}
this.verify = function() {
return this.getdata();
}
}]);
首先,这个问题与您的服务不起作用有关,而与您提到的重定向有关,因此您可以尝试以下方法:
starter.service("verifyWallet", ['$http', function($http) {
var self = this;
var baseAPIUrl = 'api/rest/'; //in your question there is no value for baseAPIUrl
self.getData = function() {
var IsEnableWallet = null;
var promise = $http({
method: "GET",
url: baseAPIUrl + "IsEnableWallet/";
})
return promise;
}
}]);
之后,您可以在调用函数getData时使用.then
此外,您不应将变量初始化为“未定义”,而应使用null,并小心使用cammelCase,即IsEnableWallet和IsEnableWallet,javascript是键敏感的