Office js 为什么使用setTimeout()会出现错误;此加载项没有响应;仍然发生吗?

Office js 为什么使用setTimeout()会出现错误;此加载项没有响应;仍然发生吗?,office-js,Office Js,对于长时间运行的外接程序操作,我使用(部分“设计和实现技术”)中建议的setTimeout(): Word.run(函数(上下文){ var i=0; ... prgText.setTotal(限值); 设置超时(写入、暂停); 返回context.sync(); 函数编写(){ var row=tblText.container.insertRow(i+1); row.insertCell(0.innerHTML=“text”; insertCell(1).innerHTML=i++; prg

对于长时间运行的外接程序操作,我使用(部分“设计和实现技术”)中建议的
setTimeout()

Word.run(函数(上下文){
var i=0;
...
prgText.setTotal(限值);
设置超时(写入、暂停);
返回context.sync();
函数编写(){
var row=tblText.container.insertRow(i+1);
row.insertCell(0.innerHTML=“text”;
insertCell(1).innerHTML=i++;
prgText.setProgress(i);
如果(i<限制){
设置超时(写入、暂停);
}否则{
...
}
}
})
但错误仍然存在:

如何更改示例以避免出现错误?为什么这个警告被称为错误

请注意,问题不是关于如何加快脚本速度


完整示例可在

上找到,原因似乎是超时设置为零毫秒。因此,如果循环足够长,则外接程序将挂起


最好的解决方案可能是尽可能多地从Word.run语句中提取逻辑。例如,您可以在调用Word.run之前构造表项,然后在一次调用中简单地设置多行值,而不是多次重复调用insertRow。

能否提供此Word.run的完整代码?我不清楚你在这里做什么,而且(目前)看起来你在同步之前正在暂停,因此从未真正同步过。完整代码-在更新进度条之前,等待10秒是相当长的时间。为什么这么长?进度条每隔一秒就会定期、平稳地更新一次:
const PAUSE=0。请从GiHub运行示例。MarС,您对如何解决此问题有何建议?
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 {
            ...
        }
    }
})