我正在使用Visual Studio模板编写Excel加载项。在我的Javascript文件中,我有一个名为loadSampleData的函数,其中使用了fetch(url)从API请求一些数据。如果我在Office.initialize中调用loadSampleData(),则此方法可以很好地工作。但是我只需要在用户输入(选中某些复选框并按下搜索按钮)后才调用该函数,因为URL必须根据用户的选择进行更改。问题是,如果我在“搜索”按钮的.click()中具有功能,它将开始执行,但获取请求仍处于待处理状态。
我使用了Office加载项调试器来仔细查看正在发生的事情。如果我单击搜索按钮,则发送请求,但永远保持“待处理”状态。如果我使用调试器的控制台发出完全相同的请求(相同的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();
});
});
}