首页 > 解决方案 > 当我在我的 word 插件应用程序中使用 Promise 时出现未定义的错误

问题描述

我正在开发一个 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 是否支持承诺!或者如果我错过了什么

标签: javascriptpromiseoffice-jsword-addinsword-web-addins

解决方案


以下是创建函数作为 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);
})

推荐阅读