AngularFire ChangePassword错误回调无法正常工作

时间:2014-08-11 13:42:54

标签: angularjs firebase angularfire firebasesimplelogin

我正在尝试使用firebase changePassword()函数以及错误回调。

changePassword: function(email, oldPassword, newPassword){
      return auth.$changePassword(email, oldPassword, newPassword).then(function(error) {
console.log(error);
});

该脚本有效且有效。但是错误回调没有。例如,当输入错误的旧密码时,没有任何反应,并且没有任何内容记录到控制台。如果一切都正确完成,并且密码成功更改,则会将错误记录到控制台并显示为未定义。

任何有类似问题的人/知道我做错了什么?

由于

1 个答案:

答案 0 :(得分:2)

AngularFire的$changePassword方法返回一个承诺。使用Futures / promises时,标准与node.js-esque回调不同,因为错误不会在成功回调中返回,而是传递给失败回调(传递给第二个函数)。

您还可以使用特殊的finalcatch方法作为then(success, failure)的快捷方式。这允许以复杂的方式链接顺序事件:

stepOne()
  .then(stepTwo)
  .then(stepThree)
  .then(stepFour)
  .catch(function(error) {
     console.error(error);
  });

请注意我们只在一个地方处理错误。每个"步骤"只有在上一步成功时才会被触发,所以我们不需要经常包含if / then / else逻辑来处理每一点的失败。

因此,要翻译,API就像这样使用:

$changePassword(...).then(/* success */, /* failure */);

或者在你的情况下:

changePassword: function(email, oldPassword, newPassword){
      return auth.$changePassword(email, oldPassword, newPassword).catch(function(error) {
console.log(error); });
   // or...
   // return auth.$changePassword(...).then(null, function(error) { ... });
});