javascript - Javascript:异步函数返回 Promise 对象而不是字符串
问题描述
在此函数中的所有代码执行完毕后,我只是想返回一个字符串。
目前,一个 Promise 对象被添加到数组中,而不是我期望的字符串。
我究竟做错了什么 ?
main.js
try {
await filePaths.push(createCompaniesParquet(companiesDataset));
await filePaths.push(createFacilitiesParquet(facilitiesDataset));
}catch(err){
console.log(err)
}
console.log(filePaths)
var createCompaniesParquet = async(facilities)=>{
var writerFacilitySchema = new parquet.ParquetSchema(facilitySchema);
var writerFacility = await parquet.ParquetWriter.openFile(writerFacilitySchema, '/tmp/facilities.parquet');
try{
for (let index = 0; index < facilities.length; index++) {
await writerFacility.appendRow({
facility_commitment: false,
facility_currency: 'GBP',
facility_originator_lgd: 0.45,
facility_originator_pd: 0.0, //TODO
facility_security: TRUE, //TODO
facility_id: '', //TODO
});
}
await writerFacility.close();
} catch(err){
return err
}
return '/tmp/facilities.parquet'
}
var createFacilitiesParquet = async(facilities)=>{
var writerFacilitySchema = new parquet.ParquetSchema(facilitySchema);
var writerFacility = await parquet.ParquetWriter.openFile(writerFacilitySchema, '/tmp/facilities.parquet');
try{
for (let index = 0; index < facilities.length; index++) {
await writerFacility.appendRow({
facility_commitment: false,
facility_currency: 'GBP',
facility_originator_lgd: 0.45,
facility_originator_pd: 0.0, //TODO
facility_security: TRUE, //TODO
facility_id: '', //TODO
});
}
await writerFacility.close();
} catch(err){
return err
}
return '/tmp/facilities.parquet'
}
使用上述内容,如果我控制台日志文件路径我得到这个:
[ Promise { <pending> }, Promise { <pending> } ]
我希望得到这个:
["/tmp/facilities.parquet","/tmp/facilities.parquet"]
解决方案
Promise 处于以下状态之一:
- 待定:初始状态,既不履行也不拒绝。
- 已完成:表示操作已成功完成。
- 拒绝:表示操作失败。
因此,如果操作成功完成,您可以使用createFacilitiesParquet(params).then(val => {//do some thing})
val 的值是您在函数中返回的值。
推荐阅读
- c++ - 编写自己的可执行格式GCC?
- javascript - 如何从托管在 Firebase 上的网页写入 Firebase 数据库
- facebook - Facebook 长寿命页面令牌过期
- angular - Github Actions 为 Angular 项目部署了一个空白的 Firebase 页面
- c++ - 如何从 cin 获得可变数量的输入?
- python - 安装软件包时 pip 在我的 venv 之外寻找,并从我的 Requirements.txt 文件中安装了错误的版本
- sql - 仅插入表中不同的行?
- android-studio - 停止 Android Studio 4.1.3 的截断字符串插值
- javascript - 从节点js中的服务器读取excel文件的内容
- excel - 将日期格式转换为时间格式