Получение обещания неопределенной ошибки при использовании Promise в приложении Word Word Addin - PullRequest
1 голос
/ 28 февраля 2020

Я разрабатываю надстройку Word (Word API + Office. js), я пытаюсь реализовать метод как обещание, но получаю сообщение об ошибке: обещание не определено

Это ссылки который я использую

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

Я пытался создать пример метода обещания из веб-учебника в моем проекте надстройки, даже там я Я получаю ту же ошибку. пожалуйста, дайте мне знать, поддерживаются ли обещания в слове addin !! или если я что-то упустил

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Эта ошибка означает, что ваша надстройка работает в IE, которая изначально не поддерживает Promises. В Office есть полифилл Promises, который вы можете использовать. Просто добавьте этот код в начало файла JavaScript: if (! Window.Promise) {window.Promise = Office.Promise; }

0 голосов
/ 28 февраля 2020

Ниже приведен способ создания функции в качестве обещания и вызова функции

. Пример cade о том, как работает обещание и как его можно вызвать, объект обещания может быть вызван только путем вызова метода then и передача разрешения и отклонения функций обратного вызова.

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);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...