对于长时间运行的加载项操作,我按照Resource limits and performance optimization for Office Add-ins中的建议使用setTimeout()
(第34节"设计和实现技巧"):
Word.run(function (context) {
var i = 0;
...
prgText.setTotal(LIMIT);
setTimeout(writing, PAUSE);
return context.sync();
function writing() {
var row = tblText.container.insertRow(i + 1);
row.insertCell(0).innerHTML = "text";
row.insertCell(1).innerHTML = i++;
prgText.setProgress(i);
if (i < LIMIT) {
setTimeout(writing, PAUSE);
} else {
...
}
}
})
但错误仍然存在:
如何更改示例以便不会发生错误?为什么这个警告被称为错误?
请注意,问题不在于如何加快脚本速度。
完整示例可在GitHub
上找到答案 0 :(得分:0)
原因似乎是超时设置为零毫秒。因此,如果循环足够长,则加载项将挂起。
最好的解决方案可能是尽可能从Word.run语句中提取逻辑。例如,您可以在调用Word.run之前构造表条目,然后只需在一次调用中设置多行值,而不是多次重复调用insertRow。