gpt4 book ai didi

javascript - 从另一个文件中的函数调用回调函数时返回未定义的值

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:52 24 4
gpt4 key购买 nike

我是 javascript/nodeJS 编程新手。我想从 Excel 文件中读取一个单元格值,我可以使用 excelJS API 来执行此操作,并且我需要将此单元格值返回到另一个文件中的函数。因为它是一个异步操作,我使用回调来处理它,但不知何故回调函数返回未定义的值。即使我很努力也无法修复它。如果有人为我提供解决方案,这对我来说将是一个很大的帮助。我有两个 .js 文件,第一个是 readvalues.js 文件,另一个是 mycallback.js 文件。我正在从 readvalue 函数调用 mycallback 函数,该函数位于另一个具有三个参数的文件中(第一个是sheetName,第二个是ColumnName,第三个是回调函数)。当我打印从 mycallback 函数收到的值时,它显示未定义。下面是代码片段:

readvalus.js

var mycallback = require('./mycallback.js');        
var Excel = require('exceljs');
function readvalues(){
console.log('Calling mycallback Function');
mycallback('General Data', 'Name', function(name){
console.log('Received name from mycallback function = ' +name); //displays value of name as undefined
});
console.log('Finished calling mycallback Function');
}
readvalues();

mycallback 函数(内部调用另一个名为 getData 的函数)。

var Excel = require('exceljs');
var mycallback = function(sheetName, columnName,callbackOne) {
getData(sheetName, columnName, function(value){
console.log('Data received from getData Function = '+value); //prints value as undefined.
callbackOne(value);
});
}

function getData(sheetName, columnName, callbackTwo){
var workbook = new Excel.Workbook();
var filename = './data.xlsx';
workbook.xlsx.readFile(filename) //function of exceljs API
.then(function(){
var worksheet = workbook.getWorksheet(sheetName);
var row = worksheet.getRow(1).values;
for(var i=1; i<row.length; i++){
if(row[i] === columnName){
var rowVal = worksheet.getRow(2).values;
var data = rowVal[i];
}
}
console.log('Data passed from getData Function = '+data); //prints value of data as undefined.
callbackTwo(data);
})
}
module.exports = mycallback;

注意:当我单独运行 mycallback 函数(如 mycallback('Common Data', 'Name') ,但 mycallback 函数中没有callbackOne)时,它会完美地打印预期值“John”。

输出:

Outputs

Excel 数据 Data which I want to read from the excel

最佳答案

在 readvalus.js 中将“常规数据”替换为“通用数据”

关于javascript - 从另一个文件中的函数调用回调函数时返回未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41414232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com