簡體   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