Я пишу надстройку 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();
});
});
}