Можно ли дождаться выполнения текущего метода? - PullRequest
1 голос
/ 26 февраля 2020

Я разрабатываю надстройку Word (Word API + Office. js), в которой я работаю с элементами управления содержимым, я пытаюсь проверить, является ли элемент управления пустым, если он пуст, я пытаюсь установить флаг «Ложь».

, но из-за асинхронной природы c выполнение перемещается на следующую строку без полного выполнения метода CheckMandatoryFields, следовательно, обязательный флаг всегда имеет значение true.

есть ли способ дождаться завершения выполнения CheckMandatoryFields

 var mandatoryflag = "True";

 function Test()
    {

        CheckMandatoryFields();

        if (mandatoryflag)
        {
              document.getElementById('lblstatus').innerText += "Success" + " ";
        }
    }

    function CheckMandatoryFields() {

        var MadatoryFieldsList = ["Control1","Control2"];

        $.each(MadatoryFieldsList, function (index, element) {

            Word.run(function (context) {             
                var contentControls = context.document.contentControls.getByTag(element).getFirst();                
                contentControls.load('text');

                return context.sync().then(function () {
                    var text = contentControls.text;

                    if (text == "") {
                        document.getElementById('lblstatus').innerText += element + " is Mandatory" + " ";
                        mandatoryflag = "False";
                    }
                })
            });

        });      

    }

1 Ответ

1 голос
/ 27 февраля 2020

Пример обещания офиса js метод:

private getToken = (): Promise<string> => {
    return new Promise((resolve, reject) => {
      Office.context.mailbox.getCallbackTokenAsync(
        {},
        (asyncResult): void => {
           if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
               resolve(asyncResult.value)
           } else {
               reject("GetCallbackToken failed")
           }
        })
    })
  }

Использование:

getToken().then(res => {
   // Do stuff with token
}).catch(err => {
   // Handle error
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...