我目前正在使用exceljs打开和编写excel文件。然而,等待正在犯一个错误。
SyntaxError: await is only valid in async functions and the top level bodies of modules尽管函数处于异步状态。我如何解决这个问题?下面是我正在使用的代码
async function Process(filename){
const workbook = new ExcelJS.Workbook();
let myPromise = new Promise(function(myResolve, myReject) {
// "Producing Code" (May take some time)
try{
await workbook.xlsx.readFile(filename)
myResolve(); // when successful
}catch(err){
myReject(); // when error
}
});
// "Consuming Code" (Must wait for a fulfilled Promise)
myPromise.then(
function() {
/* code if successful */
},
function() {return false;}
);
}发布于 2022-01-06 14:01:50
同意这些评论,你应该避免Promise constructor antipattern和never use await in the executor of a new Promise!
你应该写
function Process(filename){
const workbook = new ExcelJS.Workbook();
// "Producing Code" (May take some time)
let myPromise = workbook.xlsx.readFile(filename);
// "Consuming Code"
return myPromise.then(function() {
/* code if successful, waiting for a fulfilled Promise */
return …;
}, function() {
/* code when error, waiting for a rejected Promise */
return false;
});
}或
async function Process(filename){
const workbook = new ExcelJS.Workbook();
try {
// "Producing Code" (May take some time)
await workbook.xlsx.readFile(filename);
// "Consuming Code" (wait for the promise to be fulfilled)
return …;
} catch(err) {
// Code when error in producing or consuming code
return false;
}
}https://stackoverflow.com/questions/70605587
复制相似问题