[英]Javascript : How can i return object type?
这些天我正在尝试学习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);
}
});
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);
var request = request;
console.log(typeof(request));
console.log('-----------------------------')
return {headers_view:headers_view, results_view:results_view, tmp:tmp, request:request};
我检查 [console.log(typeof(request))] 和 [console.log(request)]。 以前的类型是'object',信件请求有它自己的价值(SQL ...)
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)] 时。 该值为“未定义”。 为什么会出现这个问题? 我该如何解决这个问题?
更新请求 sql 如下
Request {
_events: [Object: null prototype] { doneProc: [Function], row: [Function] },
_eventsCount: 2,
_maxListeners: undefined,
sqlTextOrProcedure: " SELECT [Head],round([Avg],2) as 'TS_Avg' FROM [first_Class].[dbo].[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
}
请求在 part1 方法之外未定义的原因是,正如您在评论中所述,它是异步 function。
因此,在调用 part1 之后执行的代码行,不要等待它的调用完成。
为了获得 part1 方法的调用结果,您需要将成功/失败回调方法传递给它,并在方法 part1 完成执行时使用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.