Проблема в функции ReadExcel заключается в том, что .then () всегда возвращает экземпляр Promise, а не фактическое значение разрешения. Таким образом, делая let blabla = promise.then(v => {return v})
, blabla
переменная будет обещанием, и для доступа к значению разрешения вам нужно будет сделать blabla.then(v => ...)
.
. Поэтому, когда вы console.log
переменная excelContents
, Вы видите объект с двумя свойствами: состояние, представляющее состояние обещания, и значение, которое является значением разрешения.
Я рекомендую, если вы используете асинхронную функцию c, как я вижу, что вы делаете , чтобы использовать async / await следующим образом:
async ReadExcel(event)
{
return new Promise<Object>(async(resolve, reject) =>
{
try {
var excelContents = await this.parser.parseExcel(event)
console.log("New Quote Component Log: ", excelContents)
//need var excelContents to only contain the array and not contain the value of the promise object
resolve(excelContents)
} catch(e) {
reject(e)
}
}
)}
}
, поскольку await promiseReturningFunc()
вернет значение разрешения.
Будьте осторожны с обработкой ошибок, всегда используйте try / catch.
Также обратите внимание, что я добавил asyn c в обработчик обещаний.