Я добился больших успехов в разработке надстройки Office.js для Word.Одной из общих задач надстройки является поиск и замена, которые должны использоваться несколькими кнопками действий в надстройке.Поэтому я хотел бы создать функцию, которая разделяет задачи поиска и замены, чтобы я мог избежать ошибок и сделать код более модульным.Я застреваю при попытке сделать это с моделью асинхронного выполнения Office.js.
Этот код работает (как метод класса React):
replaceX() {
console.log("replaceX");
window.Word.run(async (context: any) => {
const range = context.document.getSelection();
await context.sync();
var query = "X";
var replacement = "gabagool";
var results = range.search(query);
results.load();
await context.sync();
for (var i=0; i<results.items.length; i++) {
results.items[i].insertText(replacement,'Replace');
}
await context.sync();
});
}
Но этот код не работает:
replaceX() {
console.log("replaceX");
window.Word.run(async (context: any) => {
const range = context.document.getSelection();
await context.sync();
var query = "X";
var replacement = "gabagool";
this.replaceInRange(context, range, query, replacement, {});
await context.sync();
});
}
async replaceInRange(context:any, range:any, query:String, replacement:String, searchOptions:any) {
console.log('replaceInRange');
var results = range.search(query, searchOptions);
results.load();
await context.sync();
for (var i=0; i<results.items.length; i++) {
results.items[i].insertText(replacement,'Replace');
}
}
Я пробовал несколько вариантов, но я уверен, что упускаю что-то фундаментальное.Может кто-нибудь помочь мне выяснить правильный способ обработки подпрограммы, которая должна получить доступ к контексту родительской функции?