我正在尝试使用firebase changePassword()函数和错误回调。
changePassword: function(email, oldPassword, newPassword){
return auth.$changePassword(email, oldPassword, newPassword).then(function(error) {
console.log(error);
});
脚本是有效的和工作。然而,错误回调不会。例如,当输入错误的oldpassword时,什么也不会发生,也不会记录到控制台。当一切都正确完成,并且密码被成功更改时,错误将被记录到控制台,并且似乎未定义。
有人有类似的问题/知道我做错了什么?
谢谢
AngularFire的$changePassword
方法返回一个promise。当使用期货/承诺时,标准与node.js风格的回调不同,因为错误不会在成功回调中返回,而是传递给失败回调(传递给失败回调的第二个函数)。
您还可以利用特殊的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) { ... });
});