【问题标题】:Remove event handler excel javascript api删除事件处理程序excel javascript api
【发布时间】:2021-05-25 14:23:55
【问题描述】:

我一直试图在调用格式函数时执行事件处理函数,然后删除事件处理函数。这样就限制了监听计算函数的时间。

这个示例Remove an event handler 声明了函数,但我对调用“remove()”的地方有点困惑。

 async function format() {
    var eventResult;
    await Excel.run(async (context) => {   
      const sheet = context.workbook.worksheets.getActiveWorksheet();    
      eventResult = sheet.onCalculated.add(function(event){
        return Excel.run(function (context){
          //Do some things 
          return context.sync().then(function () {
            //Do some things 
          })
          .then(()=>{
            // remove();  -> error: eventResult is not defined
          })
        });
      });
      // remove();   -> error: eventResult is not defined
      return context.sync();
    });
  }

移除功能:

async function remove() {
await Excel.run(eventResult.context, function (context) {
    eventResult.remove();
    return context.sync()
      .then(function() {
          eventResult = null;
          console.log("Event handler successfully removed.");
      });
})
}

【问题讨论】:

  • 我认为示例中可能存在错误。尝试只将 eventResult 传递给 Excel.run 而不是 eventResult.context。

标签: office-js office-addins excel-addins


【解决方案1】:

我认为问题在于局部变量“eventResult”不可用于“remove()”函数。尝试以下选项之一将解决问题。

  1. 移动代码“var eventResult;” “异步函数格式(){...}”的上方(外部)。
  2. 将“eventResult”作为“remove()”函数的输入参数,类似于“async function remove(eventResult)”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多