Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步等待函数返回未定义的_Javascript_Node.js - Fatal编程技术网

Javascript 异步等待函数返回未定义的

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

我试图使用async Waitis处理“错误场景”,但在第10行,我没有定义返回值

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块不返回结果。