Javascript 为什么我要获取TypeError:onSuccess不是angularjs服务中的函数

Javascript 为什么我要获取TypeError:onSuccess不是angularjs服务中的函数,javascript,angularjs,Javascript,Angularjs,我有一个angularjs服务,它利用restangular打电话 角度模块('app.userSvc',[]) .factory('userSvc',['localStorageService','$rootScope','Restangular',', 函数(localStorageService、$rootScope、restanglar){ 函数checkIfLoggedIn(){ 返回localStorage.getItem('token'); } 功能登录(电子邮件、密码、onSuc

我有一个angularjs服务,它利用restangular打电话

角度模块('app.userSvc',[]) .factory('userSvc',['localStorageService','$rootScope','Restangular',', 函数(localStorageService、$rootScope、restanglar){ 函数checkIfLoggedIn(){ 返回localStorage.getItem('token'); } 功能登录(电子邮件、密码、onSuccess、onError){ Restangular.all('api/authenticate') .邮政({ 电邮:电邮,, 密码:密码 }) .那么( 功能(响应){ localStorage.setItem('token',response.token); 成功(响应); }, 功能(响应){ onError(响应); }); } 函数注销(){ localStorageService.remove('token'); } 函数getCurrentToken(){ 返回localStorage.getItem('token'); } 函数getAuthenticatedUser(onSuccess,onError){ Restangular.one('api/authenticated_user?token='+getCurrentToken()).get().then(函数(响应){ onSuccess(response.user); },功能(回应){ onError(响应); }); } Restangular.setDefaultHeaders({ “授权”:“承载者”+getCurrentToken() }); 返回{ checkIfLoggedIn:checkIfLoggedIn, 登录:登录, 注销:注销, getCurrentToken:getCurrentToken, getAuthenticatedUser:getAuthenticatedUser }; } ]); 但是当我在控制器中调用userSvc.getAuthenticatedUser()方法时,我得到了TypeError:onSuccess不是一个函数 这就是我所说的

console.log(userSvc.getAuthenticatedUser());

我做错了什么。我使用的是angular 1.6

您必须将回调函数设置为第一个参数,因为在
getAuthenticatedUser()
中,没有检查是否设置了
onSuccess
参数。(onError回调实际上也是如此,因此您也需要提供第二个参数)

因此,要么在
getAuthenticatedUser
函数中实现这样一个检查(例如
onSuccess&&onSuccess()
),要么提供一个回调函数(即使它是一个匿名函数,对任何东西都不起作用),以防止出现该错误

userSvc.getAuthenticatedUser(function() {}, function() {});

必须将回调函数设置为第一个参数,因为在
getAuthenticatedUser()
中,没有检查是否设置了
onSuccess
参数。(onError回调实际上也是如此,因此您也需要提供第二个参数)

因此,要么在
getAuthenticatedUser
函数中实现这样一个检查(例如
onSuccess&&onSuccess()
),要么提供一个回调函数(即使它是一个匿名函数,对任何东西都不起作用),以防止出现该错误

userSvc.getAuthenticatedUser(function() {}, function() {});

错误是预期的,因为您的服务方法预期回调方法,所以请传递它们

function getAuthenticatedUser(onSuccess, onError){
}
因此,您需要传递回调方法

userSvc.getAuthenticatedUser(function() {}, function() {})

或者,您可以检查参数是否已定义,以及


错误是预期的,因为您的服务方法预期回调方法,所以请传递它们

function getAuthenticatedUser(onSuccess, onError){
}
因此,您需要传递回调方法

userSvc.getAuthenticatedUser(function() {}, function() {})

或者,您可以检查参数是否已定义,以及