javascript、对象、传递函数作为参数和参数-角度、jquery概念基本误解
我试图理解我真正在做什么,因为我觉得我缺少一些东西。你能给我指个地方或确认我的错误/理解吗javascript、对象、传递函数作为参数和参数-角度、jquery概念基本误解,javascript,jquery,oop,object,angularjs,Javascript,Jquery,Oop,Object,Angularjs,我试图理解我真正在做什么,因为我觉得我缺少一些东西。你能给我指个地方或确认我的错误/理解吗 request.then(function(response) { updateCurrentUser(response.data.data); currentUser.isAuthenticated(); }); 基本上是这样吗 request = { then : function (foo){ foo("first") }
request.then(function(response) {
updateCurrentUser(response.data.data);
currentUser.isAuthenticated();
});
基本上是这样吗
request = {
then : function (foo){
foo("first")
} }
request.then(function (response) { console.log(response) ; });
如果您看到完整的代码#35和#63
指令:
AuthenticationService.login($scope.user.email, $scope.user.password).then(function(loggedIn) {
if ( !loggedIn ) {
$scope.authError = "Login failed. Please check your credentials and try again.";
}
});
AuthenticationService作为工厂:
login: function(email, password) {
var request = $http.post('http://', {email: email, password: password});
return request.then(function(response) {
updateCurrentUser(response.data.data);
return currentUser.isAuthenticated();
});
},
我不明白的是,为什么loggedIn变量的值等于what语句返回的currentUser.isAuthenticated();返回且不等于原件的then(功能(响应),因为我正在从AuthenticationService返回承诺。
对于上述示例,如何实现这一点
谢谢。我认为概念上的问题是因为您忽略了return语句。
AuthenticationService.login
实际上是一个带有预定义请求的闭包,因此您可以想象login
被其返回值请求所取代。然后(函数(响应){…
。然后您可以简单地推断整个代码行是:
AuthenticationService.login($scope.user.email, $scope.user.password).then(
function(response)
{
updateCurrentUser(response.data.data);
return currentUser.isAuthenticated();
}).then(
function(loggedIn)
{
...
通过这种方式,您可能会看到响应的结果应该作为登录检查下一步的输入。不清楚您在这里询问的是什么。我将尝试重新格式化,谢谢您是否询问如何将变量
foo
传递到。然后(函数(foo){
?对于此类功能,您需要更高级的函数:.hmm..not.在请求中。然后(函数(响应)…在响应中让我们说值“a”。然后我返回该请求并再次执行请求。然后(函数(loggedIn)和现在在loggedIn中有值“B”。。关于当前用户。isAuthenticated()返回…为什么?见鬼,也许是吧..但我还是不这么理解。你能更详细一点吗?见鬼,是的,我明白了:,因为调用承诺的api返回一个新的派生承诺,很容易创建一个承诺链:
和以下工作:$http.get('http://')。然后(函数(greet){console.log(greet);返回“something other”})。然后(function(greet2){console.log(greet2);});