Javascript 异步等待函数返回未定义的
我试图使用async Waitis处理“错误场景”,但在第10行,我没有定义返回值Javascript 异步等待函数返回未定义的,javascript,node.js,Javascript,Node.js,我试图使用async Waitis处理“错误场景”,但在第10行,我没有定义返回值 let retries = 0; async function getQueueItems() { return [1, 2, 3] } async function updateQueue(queueItem, message) { return 'updatedQueue'; } async function saveToProcessedQueue(queueItem) { r
let retries = 0;
async function getQueueItems() {
return [1, 2, 3]
}
async function updateQueue(queueItem, message) {
return 'updatedQueue';
}
async function saveToProcessedQueue(queueItem) {
return "saved";
}
async function sendMail(queueItem) {
try {
// if(!error) // do something and return
// handling the error scenario
if ('error') {
if (retries < 5) {
console.log('retries ', retries);
retries += 1;
await sendMail(queueItem);
} else {
await updateQueue(queueItem, '');
retries = 0;
return { status: false };
}
} else {
return { status: true, respObj: result };
}
} catch (error) {
console.log('sendMail ', error);
}
}
async function processBatch() {
try {
const queueItems = await getQueueItems();
if (queueItems.length) {
for (let index = 0; index < queueItems.length; index += 1) {
const res = await sendMail(queueItems[index]); // LINE 10 undefined here
if (res.status) {
await saveToProcessedQueue(queueItems[index]);
}
}
} else {
console.log('No queue items found to process');
return;
}
} catch (error) {
console.log('error message in process batch', error);
}
}
processBatch();
let retries=0;
异步函数getQueueItems(){
返回[1,2,3]
}
异步函数updateQueue(队列项,消息){
返回“updatedQueue”;
}
异步函数saveToProcessedQueue(queueItem){
返回“已保存”;
}
异步函数sendMail(queueItem){
试一试{
//if(!error)//执行某些操作并返回
//处理错误场景
如果('错误'){
如果(重试次数<5次){
console.log('retries',retries);
重试次数+=1;
等待发送邮件(队列项目);
}否则{
等待更新(队列项“”);
重试次数=0;
返回{状态:false};
}
}否则{
返回{status:true,respObj:result};
}
}捕获(错误){
console.log('sendMail',错误);
}
}
异步函数processBatch(){
试一试{
const queueItems=等待getQueueItems();
if(queueItems.length){
对于(让索引=0;索引
我在
const res=await sendMail(queueItems[index])上得到undefined
代码>即使我返回false作为返回{status:false}代码>我猜在某个时间点重试<5
,因为在该块中没有返回任何内容,最终结果将是未定义的:
try {
// if(!error) // do something and return
// handling the error scenario
if ('error') {
if (retries < 5) {
console.log('retries ', retries);
retries += 1;
await sendMail(queueItem);
} else {
// ...
}
} else {
// ...
}
我猜会在某个时刻重试<5
,因为在该块中没有返回任何内容,所以最终结果将是未定义的:
try {
// if(!error) // do something and return
// handling the error scenario
if ('error') {
if (retries < 5) {
console.log('retries ', retries);
retries += 1;
await sendMail(queueItem);
} else {
// ...
}
} else {
// ...
}
重试次数<5次,catch块不返回结果。重试次数<5次,catch块不返回结果。