修改 onSuccess 调用中的全局值



我正在使用 aws Cognito 文档中的这个函数。

cognitoUser.forgotPassword({
    onSuccess: function (result) {
        console.log('call result: ' + result);
    },
    onFailure: function(err) {
        alert(err);
    },
    inputVerificationCode() {
        var verificationCode = prompt('Please input verification code ','');
        var newPassword = prompt('Enter new password ' ,'');
        cognitoUser.confirmPassword(verificationCode, newPassword, this);
    }
});

我想在 HTML 中显示或不显示 2 个字段,而不是使用提示,以便用户可以填写它们来代替 2 个丑陋的提示。我需要做的就是用更改布尔值的函数替换调用提示的函数。

试过这个:(出于某种原因,我不得不在成功内部调用changevalue()否则它不会执行(

cognitoconstruct.forgotPassword({
  onSuccess: function (result) {
    console.log('call result: ' + result);
    this.changevalue()
  }, onFailure: function (err) {
    alert(err);
  }, changevalue() {
    console.log('display', this.display)
    this.display = true;
  }
})

但是,您猜对了:this.display此函数中未定义,但它不会在外部更改。我不能用this.xxx调用任何变量或函数。如何更改此值?

我尝试添加 .then(( 或更改函数以使用合法回调,但没有运气。

编辑:我也试过这个:onSuccess: this.changevalue(),布尔值确实改变了值,但整个事情在e.onSuccess is not a function后不久就崩溃

在这里

问了一个问题后,我的大脑似乎有了创造力的激增-_-

我将调用 forgetgotPassword(( 的整个函数放在一个承诺中,并使用了一个很好的旧回调来切换值......

recoverPassword() {
  return new Promise((resolve, reject) => {
   let cognitoconstruct = this.user.recover_password(this.forgot_password.value.email);
   cognitoconstruct.forgotPassword({
     onSuccess: function (result) {
       resolve()
     }, onFailure: function (err) {
       alert(err);
       reject();
     }
   })
 })
}

 

this.recoverPassword().then(() => this.display = true)

最新更新