Как вернуть ответ от асинхронной функции cognito и отобразить ее на странице? - PullRequest
0 голосов
/ 19 сентября 2018

Учитывая приведенный ниже код, как я буду выводить ответ обратно на веб-страницу, если ответ будет успешным или неудачным?

loginUser(data) {
    var authenticationData = {
      Username : data.email,
      Password : data.password
    };
    var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
    var userPool = new AmazonCognitoIdentity.CognitoUserPool(config.cognito);
    var userData = {
      Username : data.email,
      Pool : userPool
    };
    var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
    var output = null;
    cognitoUser.authenticateUser(authenticationDetails, {
      onSuccess: function (result) {
          output = result;
          return output;
      },
      onFailure: function(err) {
          console.log(err);
      },
    });
}

<div id="test_mg"></div>

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете использовать async function и Promise, чтобы получить результат от асинхронного вызова.

function loginUser(data) {
    var authenticationData = {};
    var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
    var userPool = new AmazonCognitoIdentity.CognitoUserPool(config.cognito);
    var userData = {};
    var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
    var output = null;
    return new Promise(function(resolve, reject) {
      cognitoUser.authenticateUser(authenticationDetails, {
        onSuccess: resolve,
        onFailure: reject,
      });
    });    
}

async function main() {
    try {
      var output = await loginUser(data);
    } catch(e) {
      console.log(e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...