我有两个计时功能-> 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);
};
答案 0 :(得分:0)
根据doc (语法>返回值)
一个Promise,它将由async函数返回的值来解决,或者被async函数抛出或未捕获的异常拒绝。
应该是
exports.uploadExcel = async function uploadExcel(data) {
return await parseToJson(data)
}
答案 1 :(得分:0)
不可能在javascript中使异步代码同步,并且由于javascript是单线程的,因此您不能编写代码来等待promise,而不会阻塞处理promise本身的代码的执行。
我猜测您在调用函数uploadExcel
时没有任何await
或.then()
,因此您得到的是承诺而不是已解决承诺的价值
很遗憾,您只有两个选择:
1-让async/await
在您的代码中一路传播
2-使所有代码同步,这将是一个非常糟糕的主意。