运行时错误:未定义OfficeExtension.Promise

时间:2016-12-07 17:35:49

标签: office-js

我正在尝试在Outlook加载项中使用promises。我正在尝试根据文档:

    return Promise.resolve(function () {
        console.log("in promise");
    }).then(function () {
        console.log("in promise then");
    });

Promise.resolve()也出现在上下文帮助中。但是,当我运行它时,我得到一个运行时错误,“Promise未定义。”我正在运行office.js的1.1.0.10并指向存储库:

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>

此外,当我输入“new OfficeExtension。”时,未列出Promise。我只看到我猜是接口“IPromise。”

当前版本中是否提供Promise?或者,我应该指向不同的存储库吗?

1 个答案:

答案 0 :(得分:3)

[注意:2018年5月更新]

这里有几个问题:

  1. 如果您按原样使用Promise,则需要某种补充功能来修补IE 11及更早版本上的全局window.Promise对象(这是Office for Desktop上使用的对象)加载项)。一个这样的图书馆的例子是&#34; core-js&#34;,https://github.com/zloirock/core-js

  2. OfficeExtension.Promise仅适用于ExcelApi 1.2,WordApi 1.2或OneNote 1.1。但(2018年5月更新),我们在 Office.Promise 上提供了相同的别名,所有主机现在都可以使用,包括Outlook。

  3. IntelliSense(在Visual Studio中为JavaScript IntelliSense静默下载的VSDOC和TypeScript的DefinitelyTyped definition)对所有主机都是通用的。因此,您看到OfficeExtension(并且您会看到WordExcel),即使在运行时不支持Outlook加载项。 (注意,我不确定是否&#34; Office.Promise&#34;实际上是出现在VSDoc / D.ts中,它最近才被添加。我会添加一个注释添加很快,如果它不存在的话