1 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
正如 Roamer-1888 在評(píng)論中添加的那樣,異步函數(shù)總是返回一個(gè)Promise,即使你await在它里面然后返回?cái)?shù)據(jù),它也會(huì)作為一個(gè) Promise 返回。
在函數(shù)的調(diào)用者中,您必須等待 Promise 或使用.then()它才能訪問傳遞的數(shù)據(jù)。
該toJson函數(shù)可以更好地編寫為僅返回這樣的 Promise
function toJson (filepath) {
const file = fs.createReadStream(filepath)
return new Promise((resolve, reject) => {
Papa.parse(file, {
header: true,
complete (results, file) {
resolve(results.data)
},
error (err, file) {
reject(err)
}
})
})
}
現(xiàn)在,當(dāng)您調(diào)用 時(shí)toJson(),您可以使用await異步函數(shù)或.then()返回的 Promise鏈來訪問數(shù)據(jù)。
async function main() {
try {
const data = await toJson(filepath)
// do something with the data...
} catch (err) {
console.error('Could not parse json', err)
}
}
或與 .then()
toJson('path')
.then(console.log)
.catch(console.log)
您將能夠從底層FileReader 中捕獲錯(cuò)誤(感謝reject在error函數(shù)內(nèi)部調(diào)用)。請(qǐng)記住,通過調(diào)用resolve與results.data您放在一邊results.errors并results.meta包含有關(guān)讀取 csv 的有用信息。
添加回答
舉報(bào)