如何解决使用异步等待时处理待处理的承诺
我有两个计时功能-> getExcelFileStream和loadWorkbook
我希望函数结构仅在这两个子函数都执行后才返回响应(通过/失败)。 但是它总是返回一个promise未决子句。
async function parseToJson(data) {
const excelFileStream = await getExcelFileStream(data.url);
const dataRows = await loadWorkbook(excelFileStream,data.orgId);
return dataRows;
}
exports.uploadExcel = function uploadExcel(data) {
return parseToJson(data);
};
解决方法
根据doc (语法>返回值)
一个Promise,它将由async函数返回的值来解决,或者被async函数抛出或未捕获的异常拒绝。
应该是
exports.uploadExcel = async function uploadExcel(data) {
return await parseToJson(data)
}
,
不可能在javascript中使异步代码同步,并且由于javascript是单线程的,因此您不能编写代码来等待promise,而不会阻塞处理promise本身的代码的执行。
我猜测您在调用函数uploadExcel
时没有任何await
或.then()
,因此您得到的是承诺而不是已解决承诺的价值
很遗憾,您只有两个选择:
1-让async/await
在您的代码中一路传播
2-使所有代码同步,这将是一个非常糟糕的主意。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。