Office js 进一步研究;避免循环中的context.sync“;

Office js 进一步研究;避免循环中的context.sync“;,office-js,word-addins,Office Js,Word Addins,这篇文章对我正在开发的外接程序这个词提供了难以置信的帮助。在采用本文介绍的技术之后,我看到了巨大的性能改进 这真让我高兴。现在只剩下一个同步循环,我不知道如何处理它。下面是示例代码。带有context.sync()的罪魁祸首函数在一个循环中运行,形成了令我发疯的同步循环。你知道如何优化它吗?由于某些原因,这两个函数无法合并 async function testFunc (ranges: Word.RangeCollection) { for (let i=0; i<1000; i++

这篇文章对我正在开发的外接程序这个词提供了难以置信的帮助。在采用本文介绍的技术之后,我看到了巨大的性能改进

这真让我高兴。现在只剩下一个同步循环,我不知道如何处理它。下面是示例代码。带有context.sync()的罪魁祸首函数在一个循环中运行,形成了令我发疯的同步循环。你知道如何优化它吗?由于某些原因,这两个函数无法合并

async function testFunc (ranges: Word.RangeCollection) {
  for (let i=0; i<1000; i++) {
    await culprit(ranges.items[i]);
  }
}
async function culprit (range: Word.Range) {
  range.load("text");
  await range.context.sync();
}
异步函数testFunc(范围:Word.RangeCollection){
对于(让i=0;i尝试在循环中加载,上下文同步然后在第二个循环中读取实际文本)

(注意:未测试,但在评论中似乎有正面反馈。)

基本上:

async function testFunc (ranges: Word.RangeCollection) {
  for (let i=0; i<1000; i++) {
    ranges.items[i].load('text');
  }
  await context.sync()
  for (let i=0; i<1000; i++) {
    // read the text here
  }
}
异步函数testFunc(范围:Word.RangeCollection){
对于(让i=0;i尝试在循环中加载,上下文同步然后读取第二个循环中的实际文本)。正如@blackinging所建议的,剪切
wait range.context.sync()
罪魁祸首
中划出一行,并在调用
罪魁祸首
的行后立即插入它@Blacking假设您的建议有效,请将其作为答案而不是注释,这样它在Stack的统计数据中算作已回答。@RickKirkham谢谢。在未经测试的情况下犹豫是否推荐某些内容。尚未在offi上工作ce js for ages.Thank。在我的情况下,testFunc的实际代码有三个级别的循环,而罪魁祸首函数在最内部的循环中被调用。每个级别的循环都有带变量的附加代码。根据您的建议,使用了本文中描述的技术,我最终重新构造了代码以拖动sync()由于本文和您的建议,我已经掌握了本文介绍的技术。