gpt4 book ai didi

javascript - setTimeout 立即运行而不是等待延迟值

转载 作者:行者123 更新时间:2023-11-30 07:13:24 25 4
gpt4 key购买 nike

我完全不解。为什么这个程序不使用我得到的我命名为“结果”的延迟数。它应该用用户发布的 future 日期减去当前时间。这最终会成为警报。看一眼,运行代码。

            // Set a future time you want the alert() function to go off
var eta_ms = new Date(2017, 1, 26, 17, 06).getTime();

document.write(Date.now() + "<br />");
document.write(eta_ms + "<br />");

var result = eta_ms - Date.now();
document.write("The Delay: " + result + "<br />" );
document.write(result + "<br />");
document.write(typeof (result) + "<br />");

setTimeout(function(){ alert("Hello"); }, result);

最佳答案

只需设置 Month 0(Date-constructor 的第二个参数),它就会按预期工作。

请注意,当您在 23:35 (26.01.2017) 之后运行此代码时,结果 会变为负数,因为您必须在以后始终设置 eta_ms

希望对您有所帮助:

    var eta_ms = new Date(2017, 0, 26, 23, 35).getTime();
document.write(Date.now() + "<br />");
document.write(eta_ms + "<br />");

var result = eta_ms - Date.now();
document.write("The Delay: " + result + "<br />" );
document.write(result + "<br />");
document.write(typeof (result) + "<br />");

setTimeout(function(){ alert("Hello"); }, result);

为了避免设置第 0 月,更好的方法可能是以另一种方式设置 future 时间 (eta_ms),以便有人只需更改此 minutesInFuture 变量以改变 eta_ms。以这种方式,eta_ms 不限于一月:

    var minutesInFuture = 5;

var eta_ms = new Date().getTime();
eta_ms = eta_ms + minutesInFuture * 1000 * 60;

document.write(Date.now() + "<br />");
document.write(eta_ms + "<br />");

var result = eta_ms - Date.now();
document.write("The Delay: " + result + "<br />" );
document.write(result + "<br />");
document.write(typeof (result) + "<br />");

setTimeout(function(){ alert("Hello"); }, result);

(第 0 月)正如其状态 here

关于javascript - setTimeout 立即运行而不是等待延迟值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41883982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com