Methods Vue2:瞬间JS倒计时计时器

Methods Vue2:瞬间JS倒计时计时器,methods,vuejs2,countdown,requestanimationframe,Methods,Vuejs2,Countdown,Requestanimationframe,我有一个我不知道如何解决的问题 我有一个带有结束日期的组件,我想显示一个带有剩余秒数的倒计时计时器 我使用MomentJS来实现这一点,但我不知道如何在Vue2中实现这一点 我应该使用计算方法吗 computed: { timer: function() { var now = moment(); var then = moment().add(180, 'seconds');

我有一个我不知道如何解决的问题

我有一个带有结束日期的组件,我想显示一个带有剩余秒数的倒计时计时器

我使用MomentJS来实现这一点,但我不知道如何在Vue2中实现这一点

我应该使用计算方法吗

        computed: {
            timer: function() {
                var now = moment();
                var then = moment().add(180, 'seconds');
                return moment().to(then);
                (function timerLoop() {
                    this.timer = countdown(then).toString();
                    requestAnimationFrame(timerLoop);
                })();
            },
问题是我必须在vue2显示之前返回该值。但我还必须使用requestAnimationFrame每秒更新一次

有人能帮我吗?使用这个的最好方法是什么?setInterval还是requestAnimationFrame?我认为是后者,因为一页上会有100多个计时器,所以性能是必要的

长话短说:

如何创建此函数的Vue2函数/方法/混合?哪些每秒钟更新一次


感谢

我建议使用单个间隔每秒更新模型上的值,并使用Vue的反应性触发对计算属性的更新,而不是为每个计时器设置时间循环

    data() {
        return {
            interval: null,
            now: new Date(),
            dates: [], // Your dates here
        }
    },
    computed() {
        timers() {
            return this.dates.map(then => moment(this.now).to(then))
        },
    },
    mounted() {
        this.interval = setInterval(() => {
            this.now = new Date()
        }, 1000)
    }