1

我正在开发一个 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>

这是我试图返回承诺的方法

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);
    });
}

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

4

2 回答 2

0

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

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

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);
})
于 2020-02-28T11:24:36.333 回答
0

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

于 2020-03-04T09:52:43.373 回答