MS Office加载项、JavaScript和异步/等待

MS Office加载项、JavaScript和异步/等待,javascript,excel,async-await,office-js,office-addins,Javascript,Excel,Async Await,Office Js,Office Addins,我目前正在努力加快为Excel编写外接程序的速度,并且已经阅读了大量有关该主题的文章,我正在关注这一点 在本例中,演示者使用的是TypeScript,但是,我正在处理的当前项目需要JavaScript 我在VisualStudio2019 Community Edition的JavaScript Excel Web加载项项目中复制了该示例,而不是在Script Lab中,并且在桌面Excel上调试加载项似乎正在工作 在我的JavaScript版本中使用TypeScript示例的async/awa

我目前正在努力加快为Excel编写外接程序的速度,并且已经阅读了大量有关该主题的文章,我正在关注这一点

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

我在VisualStudio2019 Community Edition的JavaScript Excel Web加载项项目中复制了该示例,而不是在Script Lab中,并且在桌面Excel上调试加载项似乎正在工作

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

让我犹豫了一会儿的是JavaScript显然支持异步/等待。所以,我现在唯一能想到的是,Excel运行的JavaScript版本是ECMAScript 8之前的版本。我在js中找不到任何使用async/await的Office.js加载项示例。我不知道架构是如何联系在一起的,但如果有人能证实这一点,我会很感激,因为我更愿意听到JavaScript版本存在问题,因此我对此无能为力,而不是继续错误的假设,错过使用async/Wait的机会。[旁注:我也知道办公室的扩展。我保证,但这仍然令人讨厌)


提前感谢。

如果您从await/async获得语法错误,那么您可能正在使用IE作为浏览器的Office版本上进行测试。(有关在各种版本的Office上使用哪种浏览器的信息,请参阅。)IE本机不支持任何超过ES5的JavaScript版本,因此它无法识别async/await(或承诺)。要在浏览器为IE时使用ES6+的这些功能,您需要加载polyfill,或者使用tsc或babel之类的transpiler将ES6+代码转换为ES5代码。

。我认为MSoft在这里做了一次不错的文档尝试。感谢您的回复,BigBen。是的,我在研究期间浏览了一下,注意到JS示例当TS版本使用async/await时,我使用了Promissions。我希望这是JS版本的问题,并且有人已经破解了使用ES8 in-Office插件的方法(假设JS版本是问题所在).好的,谢谢Rick。看来我的鼻子嗅到了正确的方向。在我的情况下,我正在使用桌面Excel进行调试,但可能同样的推理适用;即Office 365运行的是ES8之前的JS引擎。悲哀。看起来我将不得不咬紧牙关,继续履行杂乱无章的承诺。