我正在尝试在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?或者,我应该指向不同的存储库吗?
答案 0 :(得分:3)
[注意:2018年5月更新]
这里有几个问题:
如果您按原样使用Promise
,则需要某种补充功能来修补IE 11及更早版本上的全局window.Promise
对象(这是Office for Desktop上使用的对象)加载项)。一个这样的图书馆的例子是&#34; core-js&#34;,https://github.com/zloirock/core-js
OfficeExtension.Promise仅适用于ExcelApi 1.2,WordApi 1.2或OneNote 1.1。但(2018年5月更新),我们在 Office.Promise
上提供了相同的别名,所有主机现在都可以使用,包括Outlook。
IntelliSense(在Visual Studio中为JavaScript IntelliSense静默下载的VSDOC和TypeScript的DefinitelyTyped definition)对所有主机都是通用的。因此,您看到OfficeExtension
(并且您会看到Word
或Excel
),即使在运行时不支持Outlook加载项。 (注意,我不确定是否&#34; Office.Promise&#34;实际上是出现在VSDoc / D.ts中,它最近才被添加。我会添加一个注释添加很快,如果它不存在的话。