首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Exceljs等待在异步功能方面不尽如人意

Exceljs等待在异步功能方面不尽如人意
EN

Stack Overflow用户
提问于 2022-01-06 10:15:35
回答 1查看 53关注 0票数 0

我目前正在使用exceljs打开和编写excel文件。然而,等待正在犯一个错误。

代码语言:javascript
复制
SyntaxError: await is only valid in async functions and the top level bodies of modules

尽管函数处于异步状态。我如何解决这个问题?下面是我正在使用的代码

代码语言:javascript
复制
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;}
  );
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-06 14:01:50

同意这些评论,你应该避免Promise constructor antipatternnever use await in the executor of a new Promise

你应该写

代码语言:javascript
复制
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;
  });
}

代码语言:javascript
复制
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;
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70605587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档