【问题标题】:MS Office Add-Ins, JavaScript and async/awaitMS Office 加载项、JavaScript 和 async/await
【发布时间】:2019-11-15 02:20:10
【问题描述】:

我目前正在努力加快为 Excel 编写加载项的速度,并已就该主题进行了大量阅读,并正在关注此 excellent tutorial series。

在示例中,演示者使用的是 TypeScript,但是,我正在处理的当前项目需要 JavaScript。

我已经在 Visual Studio 2019 社区版而不是 Script Lab 的 JavaScript Excel Web 插件项目中复制了该示例,并且在 Desktop Excel 上调试插件似乎工作正常。

我的问题是在我的 JavaScript 版本中使用 TypeScript 示例的 async/await 语法时出现的,因为调试器在我使用它时会引发语法错误。对 JS 中的异步编程没有太多经验,我从一开始就可以看出为什么 async/await 比嵌套回调或 Promises 更容易使用。 然后链接起来对我来说看起来很痛苦,如果可以的话,我宁愿使用 async/await。

让我纠结了一阵子的是 JavaScript 显然确实支持 async/await。所以,我现在唯一能想到的是,Excel 运行的 JavaScript 版本是 ECMAScript 8 之前的版本。我找不到任何在 JS 中使用 async/await 的 Office.js 加载项示例。我不知道架构是如何连接在一起的,但如果有人能证实这一点,我将不胜感激,因为我宁愿听到 JavaScript 版本有问题,因此我无能为力,只能在 false 下继续假设并错过了使用 async/await 的机会。 [旁注:我也知道 OfficeExtension.Promise 但这仍然令人讨厌)。

提前致谢。

【问题讨论】:

  • docs.microsoft.com/en-us/office/dev/add-ins/develop/…。我认为 MSoft 在这里的文档方面做出了不错的尝试。
  • 感谢您的回复,BigBen。是的,我在研究过程中略读了一遍,发现 JS 示例使用了 Promise,而 TS 版本使用了 async/await。我希望这是一个 JS 版本问题,并且有人破解了在 Office 插件中使用 ES8 的方法(假设 JS 版本是问题所在)。

标签: javascript excel async-await office-js office-addins


【解决方案1】:

如果您从 await/async 收到语法错误,那么您可能是在使用 IE 作为浏览器的 Office 版本上进行测试。 (有关在各种版本的 Office 上使用哪种浏览器的信息,请参阅Browsers used by Office Add-ins。) IE 本身不支持 ES5 之后的任何 JavaScript 版本,因此它无法识别 async/await(或 Promises)。当浏览器是 IE 时,要使用 ES6+ 的这些功能,您需要加载一个 polyfill,或者使用 tsc 或 babel 之类的转译器将 ES6+ 代码转译为 ES5 代码。

【讨论】:

  • 好的,谢谢瑞克。看来我的鼻子嗅到了正确的方向。就我而言,我正在使用 Desktop Excel 进行调试,但大概同样的推理也适用; IE。 Office 365 运行的是 ES8 之前的 JS 引擎。伤心。看来我将不得不硬着头皮,用凌乱的承诺继续前进。
猜你喜欢
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多