dayjs isBefore 返回值不稳定bug

最近在做一个禁言功能,有一个逻辑是,根据禁言到期时间,判断当前是否处于禁言当中。

dayjs().isBefore(dayjs(user.ban.banUntil))

但就因为这一行代码,让我吃了不少苦头。用户反馈,会出现未禁言情况下,偶现禁言标识。

经过反复的排查,发现问题可能是这行代码导致的,并且是有概率触发。

在用户未禁言的情况下,代码其实会变成

dayjs().isBefore(dayjs())

我在控制台执行这段代码,绝大多数情况下返回上false, 但也会偶现true

最后的解决办法是,先判空

user.ban.banUntil&&dayjs().isBefore(dayjs(user.ban.banUntil))

Leave a Comment

邮箱地址不会被公开。 必填项已用*标注