繁体   English   中英

如何返回结果值 out 函数 JavaScript

[英]How to return result value out function JavaScript

如何返回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
};

您必须在response.on('data',..)之前删除 return 语句response.on('data',..)此 return 语句将返回给函数调用者,并且下面的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);
    });

  };

暂无
暂无

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

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