我有一个命令,添加一个角色后必须删除其他角色,但这只是删除。我知道,我需要通过删除角色来兑现承诺,但是我不知道该怎么做。
case '?':
if(message.member.roles.has('0000000000000')) return msg.delete() && message.member.send(`nope ${b.name}!`);
message.member.removeRoles([a,c,d]);
message.member.addRole(b).catch(err => {
console.log(err);
return message.channel.send(`nope.`);
});
message.channel.send(`bb **${b.name}**!`).then(m => m.delete(3000));
message.member.send(`bb ${b.name}!`);
msg.delete()
break;
它仅删除角色。添加角色后,必须删除角色。
答案 0 :(得分:0)
看来您快到了。我看到catch()
中的then()
和promises方法已附加到某些await
上,但并没有出现在达到预期结果的位置。
(def fib-seq
(lazy-cat [0 1] (map + (rest fib-seq) fib-seq)))
要保持代码整洁并避免较长的await
回调链,可以使用关键字scope。在继续执行进一步的代码之前,它将等待执行承诺。
then()
try {
await message.member.removeRoles([a, c, d]);
await message.member.addRole(b);
} catch(err) { // If any of the promises above
console.error(err); // are rejected, the code will
} // jump to here and log the error.
在某些情况下,附加then()
方法更有意义。兑现承诺后,将执行then()
中的回调。但是,请记住代码的asynchronous programming。
then()
我绝对建议阅读JavaScript中的localhost:3000/get-cars。