javascript - MS Office 加载项、JavaScript 和 async/await
问题描述
我目前正在努力加快为 Excel 编写加载项的速度,并且已经对该主题进行了大量阅读,并且正在关注这个优秀的教程系列。
在示例中,演示者使用的是 TypeScript,但是,我正在处理的当前项目需要 JavaScript。
我已经在 Visual Studio 2019 社区版而不是 Script Lab 的 JavaScript Excel Web 加载项项目中复制了该示例,并且在 Desktop Excel 上调试加载项似乎工作正常。
我的问题是在我的 JavaScript 版本中使用 TypeScript 示例的 async/await 语法时出现的,因为调试器在我使用它时会引发语法错误。对 JS 中的异步编程没有太多经验,我从一开始就可以看出为什么 async/await 比嵌套回调或 Promises 更容易使用。链接thens对我来说看起来很痛苦,如果可以的话,我宁愿使用 async/await。
让我纠结了一阵子的是 JavaScript 显然确实支持 async/await。所以,我现在唯一能想到的是,Excel 运行的 JavaScript 版本是 ECMAScript 8 之前的版本。我找不到任何在 JS 中使用 async/await 的 Office.js 加载项示例。我不知道架构是如何连接在一起的,但如果有人能证实这一点,我将不胜感激,因为我宁愿听到 JavaScript 版本有问题,因此我无能为力,只能在错误的情况下继续假设并错过使用 async/await 的机会。[旁注:我也知道 OfficeExtension.Promise 但这仍然令人讨厌)。
提前致谢。
解决方案
如果您从 await/async 收到语法错误,那么您可能正在测试使用 IE 作为浏览器的 Office 版本。(有关在各种版本的 Office 上使用哪种浏览器的信息,请参阅Office 插件使用的浏览器。)IE 本身不支持 ES5 之后的任何 JavaScript 版本,因此它无法识别 async/await(或 Promises)。当浏览器是 IE 时,要使用 ES6+ 的这些特性,您需要加载一个 polyfill,或者使用 tsc 或 babel 之类的转译器将 ES6+ 代码转译为 ES5 代码。
推荐阅读
- nlp - 计算维基百科中单词的频率
- excel - VB Excel 打印前例程与多次打印
- minify - 使用 Terser,函数名称和变量没有被破坏,死代码没有被删除
- vue.js - 如何使用 bootstrap4 响应数据表中的固定或粘性最后一列?
- c# - 外键冲突 ef 核心脚手架
- c# - 在接口中使用虚拟方法的 C++/CLI/C# 回调
- python - 任何具有良好链接或博客的人都可以通过 apache 气流中的 xcom 功能,
- .net - 现在如何编辑 Pixelsense 应用程序?
- python - 使用 django 2 添加类别的 url
- reactjs - 如何使用 React Native 创建动态数量的组件?