У меня есть надстройка Vue.js для Excel следующим способом:
getDataFromSourceDict (sourceDict, mainSheet, i) {
window.Excel.run(async (context) => {
//Some code...
var data = {}
var key, value, temp
for (key in sourceDict) {
value = parseInt(sourceDict[key])
temp = mainSheet.getCell(i - 1, value - 1)
temp.load(['values'])
await context.sync()
data[key] = temp.values
}
//More code...
})
Поскольку я использую один и тот же кусок кода несколько раз, я хочу разделить код и иметь функцию, которая просто запускает эту часть и возвращает словарь.Однако у меня возникли проблемы, потому что я не могу запустить await context.sync () внутри обычного метода Vue.
Редактировать 1: Я думаю, что я не объяснил себя правильно.Я хочу переместить упомянутую часть первой функции в другую функцию.
methods: {
copyFromDashboardToTable (sourceName, destinationName, configData) {
window.Excel.run(async (context) => {
// SOME CODE
//I want to move out this code
//Find first empty row
var currentRow = 1
var row = -1
while (row === -1) {
var cell = table.getCell(currentRow, 0)
cell.load(['values'])
await context.sync()
var cellData = cell.values[0][0]
if (cellData === '') {
row = currentRow
}
await context.sync()
currentRow = currentRow + 1
}
// and call it with something like this
// var row = this.getFirstEmptyRow(context)
//MORE CODE
},
getFirstEmptyRow (context) {
//Move code here
}
Я пытался добавить асинхронный режим перед объявлением функции, добавить "window.Excel.run (async (context) =>") и другие вещи, но я этого не сделалсмог сделать это.