Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NodeJS,Javascript:为什么函数返回值未定义?_Javascript_Node.js - Fatal编程技术网

NodeJS,Javascript:为什么函数返回值未定义?

NodeJS,Javascript:为什么函数返回值未定义?,javascript,node.js,Javascript,Node.js,我对这个问题一无所知。我想找点东西,但还是不知道。。 这是我的密码 function part1(sql, controltime, headers_view, results_view, tmp){ var timerName = "QueryTime"; var request = new Request(sql, function(err) { if (err) { console.log(err);

我对这个问题一无所知。我想找点东西,但还是不知道。。 这是我的密码

function part1(sql, controltime, headers_view, results_view, tmp){
    var timerName = "QueryTime";
    var request = new Request(sql, function(err) {
        if (err) {
            console.log(err);
        }
    });
    request.on('doneProc', function(rowCount, more, rows) {
        if(!more){
            console.timeEnd(timerName);
        }
    });
    var result = "";
    var header = "";
    request.on('row', function(columns) { 
        headers_view = '\n'
        results_view += '\n'
        columns.forEach(function(column) {          
            if (column.value === null) {  
                result = '0';
            } else {
                    header = column.metadata.colName;
                    result = column.value;
            }
            headers_view += header + ',';
            results_view += result + ',';
            
        }); 
        headers_view = headers_view.replace(',\n','\n').slice(0,-1);
        results_view = results_view.replace(',\n','\n').slice(0,-1);

        tmp = controltime;

    }); 
    console.log(request)
    return {headers_view:headers_view, results_view:results_view, tmp:tmp, request:request};
}
在控制台上方。日志(请求)结果为

Request {
  _events: [Object: null prototype] { doneProc: [Function], row: [Function] },
  _eventsCount: 2,
  _maxListeners: undefined,
  sqlTextOrProcedure: " SELECT [Head],round([Avg],2) as 'Class_Top' FROM [Class1].[dbo].[Class1_Control] WHERE DateTime='2020-07-26 12:30:32' ",
  parameters: [],
  parametersByName: {},
  originalParameters: [],
  preparing: false,
  canceled: false,
  paused: false,
  userCallback: [Function],
  handle: undefined,
  error: undefined,
  connection: undefined,
  timeout: undefined,
  rows: undefined,
  rst: undefined,
  rowCount: undefined,
  callback: [Function],
  [Symbol(kCapture)]: false
}
这个结果正是我想要的。但问题是

async function exec1(sql, controltime) {
    part1(sql, controltime, headers_view1, results_view1, tmp1);
    var headers_view1 = part1.headers_view;
    var results_view1 = part1.results_view;
    var tmp1 = part1.tmp;
    var request = part1.request;
    console.log('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&');
    console.log(part1.request);
    console.log('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&');
    console.log('====================================')
    console.log(request)
    console.log('====================================')
    //console.time(timerName);
    const query = await Promise.all([
        dbconn1.execSql(request)
    ]);
}   
上面的console.log(request)和(part1.request)都未定义 所以,我尝试更改async->sync

function exec1(sql, controltime) {
    part1(sql, controltime, headers_view1, results_view1, tmp1);
    var headers_view1 = part1.headers_view;
    var results_view1 = part1.results_view;
    var tmp1 = part1.tmp;
    var request = part1.request;
    console.log('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&');
    console.log(part1.request);
    console.log('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&');
    console.log('====================================')
    console.log(request)
    console.log('====================================')
    //console.time(timerName);
    dbconn1.execSql(request)

}
但仍然没有定义。。。 有人告诉我尝试使用成功/失败的方法 问题是

  • 如果我尝试使用成功/失败方法,它是否正确插入到第1部分
  • 如果我尝试更改async->sync,为什么两个结果都未定义
  • 如何传输正确的请求值

  • 感谢您阅读这个长问题,第1部分是一个函数,但您正在尝试记录返回值

    在第一行中,您必须将part1的返回值存储在某物中,然后记录something.request

    所以第一行应该是这样的

    var something=part1(sql、controltime、headers\u view1、results\u view1、tmp1)

    然后


    console.log(something.request)

    第1部分是一个函数,但您正在尝试记录返回值

    在第一行中,您必须将part1的返回值存储在某物中,然后记录something.request

    所以第一行应该是这样的

    var something=part1(sql、controltime、headers\u view1、results\u view1、tmp1)

    然后

    console.log(something.request)