我正在尝试使用firebase changePassword()函数以及错误回调。
changePassword: function(email, oldPassword, newPassword){
return auth.$changePassword(email, oldPassword, newPassword).then(function(error) {
console.log(error);
});
该脚本有效且有效。但是错误回调没有。例如,当输入错误的旧密码时,没有任何反应,并且没有任何内容记录到控制台。如果一切都正确完成,并且密码成功更改,则会将错误记录到控制台并显示为未定义。
任何有类似问题的人/知道我做错了什么?
由于
答案 0 :(得分:2)
AngularFire的$changePassword
方法返回一个承诺。使用Futures / promises时,标准与node.js-esque回调不同,因为错误不会在成功回调中返回,而是传递给失败回调(传递给第二个函数)。
您还可以使用特殊的final
和catch
方法作为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) { ... });
});