当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《setTimeout立即运行,而不是等待延迟值》经验,为你挑选了1个好方法。

我完全不解.为什么这个程序没有使用我得到的延迟编号,我将其命名为"结果".它应该按用户发布的未来日期减去当前时间.这最终会成为一种警报.看看,运行代码.

            // 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() + "
"); document.write(eta_ms + "
"); var result = eta_ms - Date.now(); document.write("The Delay: " + result + "
" ); document.write(result + "
"); document.write(typeof (result) + "
"); setTimeout(function(){ alert("Hello"); }, result);



1> Blauharley..:

只需设置第0个月(日期构造函数的第二个参数),然后就可以正常工作了.

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

希望这可以帮助:

    var eta_ms = new Date(2017, 0, 26, 23, 35).getTime();
    document.write(Date.now() + "
"); document.write(eta_ms + "
"); var result = eta_ms - Date.now(); document.write("The Delay: " + result + "
" ); document.write(result + "
"); document.write(typeof (result) + "
"); setTimeout(function(){ alert("Hello"); }, result);

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

    var minutesInFuture = 5;

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

    document.write(Date.now() + "
"); document.write(eta_ms + "
"); var result = eta_ms - Date.now(); document.write("The Delay: " + result + "
" ); document.write(result + "
"); document.write(typeof (result) + "
"); setTimeout(function(){ alert("Hello"); }, result);

(第0个月)这里的州

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有