【问题标题】:nodejs wait error before return a function value [duplicate]nodejs在返回函数值之前等待错误[重复]
【发布时间】:2026-01-04 20:55:02
【问题描述】:

我想在函数中返回值之前等待一个错误。
我的代码:

async function CheckIfManagerIsInServer(client, server_id, member) {
    let isIn = { isIn: true, isNotIn: [] };

    if (CheckIfIsInChain(server_id)) {
        database.chains.forEach(chain => {
            if(chain.membersID.includes(server_id)) {
                chain.membersID.forEach(async server => {

                    client.guilds.cache.get(server)?.members.fetch(member).catch((err) => {
                        console.log(err)
                        console.log("not exists")
                        isIn.isIn = false;
                        isIn.isNotIn.push(server)

                        console.log(isIn)
                        return;
                    })

                })
            }
        })

        console.log(isIn)
    }

    console.log(isIn)

    return await Promise.resolve(isIn);
}

如您所见,有一个问题。 当函数已经返回isIn 时触发捕获。 我怎么能等?
提前感谢,抱歉英语不好!

【问题讨论】:

  • Promise.resolve(isIn); 并不意味着“给我一个承诺,当事情发生变化时会神奇地解决isIn”。您真正需要等待的是这些循环中的异步 .fetch(member) 调用。

标签: javascript node.js function try-catch


【解决方案1】:

使用 try catch ,如下所示

try {
await client.guilds.cache.get(server)?.members.fetch(member);
} catch(err) {
                        console.log(err)
                        console.log("not exists")
                        isIn.isIn = false;
                        isIn.isNotIn.push(server)

                        console.log(isIn)
                        return;
                    }

如果要按顺序执行操作,确实不能使用 forEach。只需使用现代的 for ... of 循环,其中 await 将按预期工作

【讨论】: