【问题标题】:How can Create timedown如何创建超时
【发布时间】:2021-11-23 03:23:58
【问题描述】:

我想用 mongoose 创建一个计时器,并在时间结束时激发一个函数。 我有一个测验,我想在时间结束时从测验页面注销。用nodejs实现的代码

【问题讨论】:

    标签: node.js mongoose ejs


    【解决方案1】:

    你可以试试这个:

    // Set the date we're counting down to
    var countDownDate = new Date("Jan 5, 2022 15:37:25").getTime();
    
    // Update the count down every 1 second
    var x = setInterval(function() {
    
      // Get today's date and time
      var now = new Date().getTime();
    
      // Find the distance between now and the count down date
      var distance = countDownDate - now;
    
      // Time calculations for days, hours, minutes and seconds
      var days = Math.floor(distance / (1000 * 60 * 60 * 24));
      var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
      var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
      var seconds = Math.floor((distance % (1000 * 60)) / 1000);
    
      // Display the result in the element with id="demo"
      document.getElementById("demo").innerHTML = days + "d " + hours + "h "
      + minutes + "m " + seconds + "s ";
    
      // If the count down is finished, write some text
      if (distance < 0) {
        clearInterval(x);
        document.getElementById("demo").innerHTML = "EXPIRED";
      }
    }, 1000);
    &lt;p id="demo"&gt;&lt;/p&gt;

    这是 js/dom 的 js 超时示例。 并且您可以通过任何您想要的 var 轻松更改 document.getElementById()。

    【讨论】:

      【解决方案2】:

      我会说创建一个令牌 (jwt),包括在服务器上开始测验的时间戳、user_id 和 quiz_id,并将其传递给客户端应用程序。然后你可以使用原生js函数setInterval()在ejs应用程序本身中勾选计时器,并在计时器时间到达测验到期时间时自动触发退出测验页面。

      对于每个答案提交,您可以将测验开始时创建的令牌与提交详细信息一起传递给服务器,以便服务器可以验证该令牌是否仍然有效使用(基于测验到期时间)。因此,到时间到期时,服务器将不再接受该特定测验的答案,因为令牌已过期。

      您可以根据需要包含业务逻辑,这是针对您的通用问题的更通用的答案。 (这可能不是实现测验的最佳方式,但它适用于最少的服务器请求。)

      【讨论】:

        猜你喜欢
        • 2013-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-24
        • 1970-01-01
        • 1970-01-01
        • 2011-10-29
        相关资源
        最近更新 更多