Moment.js 倒计时不超过一秒

Moment.js countdown not decrementing more than a second

我正在使用 moment.js 创建三分钟倒计时。但是,每次加载页面时,计时器都会减少一秒并停止在 2:59。但是,打印出 futuredifference 等变量似乎会产生正常结果,所以我认为我的错误在于倒计时。我的倒计时有什么问题?

这是我的代码:

    <script type="text/javascript">
        $(document).ready(function(){
            var now = moment();
            var future = moment(now).add(3, 'm');
            var difference = future - now;
            var duration = moment.duration(difference, 's');
            var interval = 1000;

            setInterval(function() {
                if(duration.asSeconds() <= 0) {
                    clearInterval(intervalId);
                    document.getElementById("clock").innerHTML = moment(duration.asSeconds()).format("m:s");
                }

                duration = moment.duration(duration.asSeconds() - 1, 's');
                document.getElementById("clock").innerHTML = moment(duration.asSeconds()).format("m:s");
            }, interval);
        });
    </script>

你可以把它改成这样:

if (moment.duration(future - moment()).asSeconds() <= 0) {

并改变

duration = moment.duration(duration.asSeconds() - 1, 's');

成为

duration = moment.duration(moment.duration(future - moment()).asSeconds(), 's');

因为你关闭是捕获上面 duration 的值,但从未真正更新它。