I want to wait an error before returning value in a function.
My code:
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);
}
As you can see, there is a catch.
The catch gets triggered when function has already returned isIn
.
How I can wait?
Thanks in advance and sorry for bad english!
use try catch , something like below
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;
}
If you want to perform the operation in sequence, you cannot use forEach indeed. Just use a modern for … of loop instead, in which await will work as expected