进一步研究 "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
}
}
文章 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
}
}