Как вернуть значение результата из функции JavaScript - PullRequest
0 голосов
/ 21 февраля 2020

как вернуть результат response.on, который является переменной результата за пределами response.on и под функцией SignIn, как вернуть результат response.on, который является переменной результата за пределами response.on и под функцией Вход

const signIn = async (password) => {
    var request = new DeviceAuthQuery();
    request.setPassword(password);
    var response = client.authenticate(request, {}, (err, response) => {
        console.log("Request Sent 1111");
    });
    return response.on('data', function (reply) {
        console.log("Data Received 2222");
        console.log('Data: 22222' + reply.getAuthjwt());
        var result = reply.getAuthjwt();
        return result
    });
    console.log("the result is==>", result)

    response.on('status', function (status) {
        console.log("Response Status:");
        console.log('Code: ' + status.code);
        console.log('Details: ' + status.details);
        if (status.metadata) {
            console.log("Received metadata");
            console.log(status.metadata);
        }
    });

    response.on('error', function (err) {
        console.log("Error:");
        console.log('Error Code: ' + err.code);
        console.log('Error Message: ' + err.message)
    });

}

export {
    signIn
};

1 Ответ

0 голосов
/ 21 февраля 2020

Вы должны будете удалить оператор возврата до response.on('data',..) Этот оператор возврата вернется к вызывающей функции, и ваш вызов console.log ниже является недоступным кодом. И как @Learn for Fun, упомянутый в комментариях, вы можете сохранить результат в переменной вне области обратных вызовов:

signIn = async (password) => {
    var request = new DeviceAuthQuery();
    request.setPassword(password);
    var response = client.authenticate(request, {}, (err, response) => {
      console.log('Request Sent 1111');
    });

    let dataResponse;

    response.on('data', function(reply) {
      console.log('Data Received 2222');
      console.log('Data: 22222' + reply.getAuthjwt());
      dataResponse = reply.getAuthjwt();
    });
    console.log('the result is==>', dataResponse);

    response.on('status', function(status) {
      console.log('Response Status:');
      console.log('Code: ' + status.code);
      console.log('Details: ' + status.details);
      if (status.metadata) {
        console.log('Received metadata');
        console.log(status.metadata);
      }
    });

    response.on('error', function(err) {
      console.log('Error:');
      console.log('Error Code: ' + err.code);
      console.log('Error Message: ' + err.message);
    });

  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...