如何创建超时

How can Create timedown

我想用 mongoose 创建一个 timedown 并在时间结束时激活一个函数。 我有一个测验,我想在时间结束时从测验页面注销。用nodejs

实现的代码

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

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

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

你可以试试这个:

// 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);
<p id="demo"></p>

这是 js/dom 的 js 超时示例。 你可以很容易地用你想要的任何变量来改变document.getElementById()。