0

我正在尝试将 firebase changePassword() 函数与错误回调一起使用。

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

该脚本有效且有效。但是错误回调没有。例如,当输入错误的旧密码时,不会发生任何事情,也不会将任何内容记录到控制台。当一切都正确完成并成功更改密码时,错误将记录到控制台并且似乎未定义。

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

谢谢

4

1 回答 1

2

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

您还可以利用特殊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) { ... });
});
于 2014-08-11T15:57:31.283 回答