【问题标题】:Redirect to another page after some time一段时间后重定向到另一个页面
【发布时间】:2021-08-06 15:07:02
【问题描述】:

我正在构建一个测验应用程序,所以我必须在时间到期后结束测试。

我存储:

  • 用户加入的初始时间
  • 用户必须结束会话的最后时间 都以毫秒为单位

我怎么知道时间到了以便我重定向用户?

【问题讨论】:

  • 可以使用 setInterval 吗?
  • setTimeout 应该做你需要的。如何触发重定向取决于您使用的路由器。
  • 设置条件,当达到finaltime时 window.location.replace(...)

标签: javascript reactjs


【解决方案1】:

您可以使用setTimeout()在一定时间后执行代码。

const second = 1000;
const minute = 60 * second;
const hour = 60 * minute;
const allowed_time = 2 * hour + 15 * minute;

setTimeout(function () {
  // redirect user
}, allowed_time);

或者,如果您没有持续时间,但有具体的结束时间。

const allowed_time = Date.UTC(2021, 8, 9, 17, 30) - Date.now(); // 21-08-17 17:30

此答案假设您不超过最大延迟值。

Maximum delay value

浏览器包括 Internet Explorer、Chrome、Safari 和 Firefox 在内部将延迟存储为 32 位有符号整数。这会导致 使用大于 2,147,483,647 毫秒的延迟时整数溢出(大约 24.8 天),导致立即执行超时。

【讨论】:

  • 不好意思问我之前没用过setTimeout,setTimeOut应该放在类的构造函数里吧?
  • @MasterWilliams 是的,setTimeout() 是一个全局函数,可以从任何地方调用,也可以从构造函数调用。请注意,如果要在构造函数上下文的回调中引用this,则必须使用arrow function 而不是普通函数。 Arrow functions don't have their own this binding 所以它将引用您当前正在构建的对象。
猜你喜欢
  • 2017-06-08
  • 1970-01-01
  • 2018-04-28
  • 2017-03-04
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
相关资源
最近更新 更多