2

何かが足りないと感じているので、自分が実際に何をしているのかを理解しようとしています。私をどこかに向けたり、私の誤解や誤解を確認していただけませんか。

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()を返す値と等しくなる理由です。AuthenticationServiceからpromiseを返しているので、元のthen(function(response)と等しくないANDを返します。上記の例に関してこれをどのように達成できますか?

ありがとうございました。

4

1 に答える 1

2

受胎の問題は、あなたがreturnステートメントを見落としたという事実から生じていると思います。実際には、事前定義されたリクエストによるクロージャであるため、それが戻り値に置き換えられるAuthenticationService.loginことを想像できます。次に、コード行全体が次のようになっていることを簡単に推測できます。loginrequest.then(function(response) {...

AuthenticationService.login($scope.user.email, $scope.user.password).then(
function(response)
{
    updateCurrentUser(response.data.data);
    return currentUser.isAuthenticated();
}).then(
function(loggedIn)
{
  ...

このようにして、応答の結果がログインチェックの次のステップの入力として発生することがわかります。

于 2012-12-28T15:29:55.883 に答える