我正在使用Java脚本中的函数读取CSV文件并等待返回值,但脚本未执行所需的操作。 CSV阅读器
`parseCSV : function(file) {
return new Promise(function (resolve, reject) {
var parser = csv({delimiter: ','},
function (err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
parser.end();
});
fs.createReadStream(file).pipe(parser);
});
}`
调用CSV阅读器
`csvreader.parseCSV(csvFile).then(function(data) {
data.forEach(function(line) {
console.log(line[0]);
console.log(line[1]);
});
},function(reason){
console.error(reason);
});`
在上面的代码中,它没有等待返回数据。
答案 0 :(得分:1)
Javascript不会等待异步函数的返回值。假设someFunction和someAsyncFunction都返回值' x'。
var result = someFunction();
console.log(result); // This line would not be executed until someFunction returns a value.
// This means that the console will always print the value 'x'.
var result = someAsyncFunction();
console.log(result); // This line would be executed immediately after someAsyncFunction
// is called, likely before it can return a value.
// As a result, the console will print the null because result has
// not yet been returned by the async function.
在上面的代码中,不会立即调用回调,因为parseCSV是一个异步方法。因此,只有异步函数完成后才会运行回调。