Discord.js 14中else语句无法执行的问题求助
Discord.js 14中catch内else语句无法执行的原因
你的代码里,.catch()回调只有在plr.send()的Promise被reject(也就是发送消息失败抛出错误)时才会触发。进入这个回调的前提就是已经产生了错误,err参数必然是一个有效的错误对象,不会是假值,所以if (err)的判断永远为真,对应的else分支根本没有执行的机会。
如果要在消息发送成功时执行console.log('test'),应该把成功逻辑放在.then()里,而不是在catch块里写else:
if (!attach) { plr.send({ content: `<@${plr.user.id}>`, embeds: [dmcontent] }) .then(() => { console.log('test') // 消息发送成功时执行 }) .catch(err => { console.log(err) // 消息发送失败时执行 }) }
或者用async/await的写法,逻辑会更直观:
if (!attach) { try { await plr.send({ content: `<@${plr.user.id}>`, embeds: [dmcontent] }) console.log('test') // 发送成功 } catch (err) { console.log(err) // 发送失败 } }
内容的提问来源于stack exchange,提问作者Joel T Byju
相关产品推荐
相关产品推荐

