当我在我的 word 插件应用程序中使用 Promise 时出现 promise undefined 错误

Getting promise undefined error when i use Promise in my word addin application

我正在开发一个 Word 加载项(Word API + Office.js),我正在尝试实现一个方法作为 promise,但我收到错误消息,指出 promise 未定义

这些是我正在使用的参考

<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
<script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
<script src="Scripts/FabricUI/MessageBanner.js" type="text/javascript"></script>
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>

这是我尝试return承诺

的方法
function getBase64(file, onLoadCallback) {
    return new Promise(function (resolve, reject) {
        var reader = new FileReader();
        reader.onload = function () { resolve(reader.result); };
        reader.onerror = reject;
        reader.readAsDataURL(file);
    });
}

我尝试在我的插件项目中从 Web 教程创建一个示例承诺方法,即使我遇到了同样的错误。请让我知道 word 插件是否支持 promise !!或者如果我遗漏了什么

以下是创建函数作为promise并调用函数的方法

关于 promise 如何工作以及如何调用它的示例,只能通过调用 then 方法并传递 resolve 和 reject 回调函数来调用 promise 对象。

function callPromise() {

  return new Promise(function(resolve, reject) {
  // do a thing, possibly async, then…

  if (true) {
    resolve("Stuff worked!");
  }
  else {
    reject(Error("It broke"));
  }
});

}

callPromise().then(function(success){
   console.log(success);
}, function(error)
{
  console.log(error);
})



function getBase64(file, onLoadCallback) {
    return new Promise(function (resolve, reject) {
        var reader = new FileReader();
        reader.onload = function () { resolve(reader.result); };
        reader.onerror = reject;
        reader.readAsDataURL(file);
    });
}

getBase64('file', function(){}).then(function(result)
{
   console.log(result);
},
function(error)
{
   console.log(error);
})

该错误意味着您的加载项是 运行 在 IE 中,它本身不支持 Promises。 Office 有一个您可以使用的 Promises polyfill。只需将此代码添加到 JavaScript 文件的顶部: 如果 (!window.Promise) { window.Promise = Office.Promise; }