简体   繁体   English

如何返回结果值 out 函数 JavaScript

[英]How to return result value out function JavaScript

how to return the result of response.on which is the result variable outside of response.on and under the function SignIn how to return the result of response.on which is the result variable outside of response.on and under the function SignIn如何返回response.on的结果是的结果可变外response.on和作用下登入如何返回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
};

You will have to remove the return statement before response.on('data',..) This return statement will return to the function caller and your console.log call beneath is unreachable code.您必须在response.on('data',..)之前删除 return 语句response.on('data',..)此 return 语句将返回给函数调用者,并且下面的console.log调用是无法访问的代码。 And like @Learn for Fun mentioned in the comments you could store the result in a variable outside the callbacks scope:就像评论中提到的@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);
    });

  };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM