Получение неопределенного при передаче данных (Typescript - транспортир) - PullRequest
1 голос
/ 11 марта 2019

Я получаю неопределенное значение при непосредственном вызове enterUsingCSV ().Функция работает правильно при вызове внутри GetDataExcel ().Кто-нибудь может объяснить, что происходит?

//// 
GetDataExcel(col: number) {
        this.papa.parse(this.file, {
            complete: async (result: any) => {
                let cc = result.data[1][col]
                //console.log(cc)
                return cc
            }
        })
    }

///
 enterUsingCSV(column:number){
    let value = this.GetDataExcel(column)
    console.log(value)
    // this.enterText("username", "id", value)

  }

//// 
e.enterUsingCSV(2);

1 Ответ

1 голос
/ 11 марта 2019

Согласно документации, когда мы вызываем Papa.parse с локальным файлом, метод parse ничего не возвращает.Вместо этого результаты предоставляются асинхронно функции обратного вызова.Это именно то поведение, которое вы видите.

GetDataExcel(col: number) {
  // The result value will always be undefined here,
  // because when we pass a local file to parse,
  // parse does not return anything.
  const result = this.papa.parse(this.file, {
    complete: async (result: any) => {
      // Instead, the results are passed to this complete callback.
      let cc = result.data[1][col];
      console.log(cc);
      // There is no point in returning cc here, 
      // because there is nothing waiting to receive the return value.
      return cc;
    }
  });
}

enterUsingCSV(column:number) {
  // The value here will also be undefined. There are two reasons for that. 
  // First, the GetDataExcel method isn't returning anything. Second, even if 
  // it did return the result constant, the result constant is always undefined, 
  // because Papa.parse does not return anything when we pass it a local file. 
  let value = this.GetDataExcel(column);
  console.log(value);
}

e.enterUsingCSV(2);

Вот соответствующая документация:

Разбор локальных файлов

Papa.parse(file, config)

file - полученный объект Fileиз DOM.

config - это объект конфигурации, который содержит обратный вызов.

Ничего не возвращает.Результаты предоставляются асинхронно с функцией обратного вызова.

...