Как я могу разделить мой код на различные функции в добавлении javascript excel, когда я использую контекст и await context.sync ()? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть надстройка 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) =>") и другие вещи, но я этого не сделалсмог сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...