进一步研究 "Avoid context.sync in loops"

Further looking into "Avoid context.sync in loops"

文章 Avoid using the context.sync method in loops 对我正在开发的 Word 加载项提供了不可思议的帮助。采用本文介绍的技术后,我看到了巨大的性能提升。

这真的让我很开心。现在只剩下一个同步循环了,我不知道如何处理它。这是示例代码。 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();
}

尝试循环加载,上下文同步,然后在第二个循环中读取实际文本。

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

基本上:

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
  }
}