【发布时间】:2020-12-26 10:28:00
【问题描述】:
我有一个用 JavaScript 编写的函数。我正在尝试调用一个从我的主函数执行一些工作的函数。我在调用函数中设置了一个条件来查找员工 ID,如果为 null,那么我将返回错误并希望从我的主函数中正常退出。但是这件事并没有发生。程序继续执行下一个代码和函数,并出现以下错误:-
{ "errorType": "Runtime.UnhandledPromiseRejection", "errorMessage": "错误:员工编号为必填项", “原因”: { "errorType": "错误", "errorMessage": "员工编号为必填项", “堆”: [ "错误:员工编号为必填项", " 在 /var/task/index.js:64:23", " 在 Array.forEach ()", " 在 transformData (/var/task/index.js:58:22)", " 在 /var/task/index.js:207:43", " 在 processTicksAndRejections (internal/process/task_queues.js:97:5)", " 在异步 Promise.all (index 0)", “在异步 Runtime.exports.lambdaHandler [作为处理程序] (/var/task/index.js:258:5)” ] }, “承诺”: {}, “堆”: [ “Runtime.UnhandledPromiseRejection:错误:员工编号是强制性的”, " 在进程中。(/var/runtime/index.js:35:15)", " 在 process.emit (events.js:315:20)", " 在 process.EventEmitter.emit (domain.js:482:12)", " 在 processPromiseRejections (internal/process/promises.js:209:33)", “在 processTicksAndRejections (internal/process/task_queues.js:98:32)” ] }
主要功能代码sn-p:-
try{
const data = await transformData(list, mymap, tenantId);
if (data === null || data === undefined) {
throw Error(`Error in transforming the data`);
}
const syncDataResponse = await syncDetails(tenantId!, data); //Calling is going here
} catch (err) {
console.log(err);
}
调用函数:-
const transformData = async (list: any, mymap: Map<string, string>, tenantId: string) => {
const data = [];
try {
await list.forEach(async (obj: { [x: string]: any; employee_number?: any; }) => {
modifyKeys(obj, mymap);
if (obj && obj.employee_number) {
data.push({ employeeId: obj.employee_number, employeeDetails: obj });
} else {
throw Error(`Employee number is mandatory`);
}
});
} catch (err) {
console.log('Error while transforming the data::', err);
return err;
}
return data;
}
当员工 id 为 null 时在 transformData 函数中抛出错误时,我期待程序正常退出,但在我的 main 方法中,程序确实执行了名为 syncDetails() 的下一个函数,我得到了这个 unhandledpromiserejection错误。
请建议。干杯
【问题讨论】:
标签: javascript node.js es6-promise