Добавление Excel с Javascript: запрос на получение данных застрял в «ожидании» - PullRequest
0 голосов
/ 04 июля 2019

Я пишу надстройку Excel, используя шаблон Visual Studio. В моем файле Javascript у меня есть функция loadSampleData, в которой я использую fetch (url) для запроса некоторых данных из API. Это прекрасно работает, если я вызываю loadSampleData () в Office.initialize. Но мне нужно вызывать эту функцию только после ввода пользователя (отметив некоторые флажки и нажав кнопку поиска), потому что URL должен меняться в зависимости от выбора пользователя. Проблема в том, что если у меня есть функция внутри .click () кнопки «Поиск», она начнет выполняться, но запрос на выборку остается в состоянии ожидания.

Я использовал отладчик для Office Add Ins, чтобы более внимательно посмотреть на происходящее. Если я нажимаю кнопку поиска, запрос отправляется, но остается в состоянии ожидания навсегда. Если я использую консоль отладчика для выполнения точно такого же запроса (идентичный URL, идентичный заголовок), он получает ожидаемый ответ. Я понятия не имею, почему это происходит. Вот мой код:

Office.initialize = function (reason) {
        $(document).ready(function () {

            //loadSampleData(); //this works perfectly fine

            $("#bt_search").click(loadSampleData); //this doesn't 

        });
    };

function loadSampleData() {
        Excel.run(function (ctx) {

            const currentWorksheet = 
            ctx.workbook.worksheets.getActiveWorksheet();
            var url = buildURL();
            fetch(url).then(function (response) {
                return response.json();
            }).then(function (myJson) {

                    //... do stuff with myJson and change row content ...

                    return ctx.sync();

                });
            });
    }
...