zoukankan      html  css  js  c++  java
  • 常用代码之八:setTimeout 和 clearTimeout。

    1.先写一个错误的例子:

       function DealSomething() {
            //write some code
            window.setTimeout(function () {
               alert("已经等待超过10分钟,自动关闭页面。");
            }, 600000);
        }

    这个例子的行为:不管是否处理完,超过10分钟后,都弹出这个alert框来。

    2.再看另一个错误的例子,这次使用了clearTimeout函数来清除setTimeout。

       function DealSomething() {
            //write some code
            var Timer =window.setTimeout(function () {
               alert("已经等待超过10分钟,自动关闭页面。");
            }, 600000);
    clearTimeout(Timer);
        }

    其中Timer是setTimeout函数的ID标识,每次调用setTimeout函数都会产生一个唯一的ID,与操作系统中的进程ID相似, 可以通过clearTimeout函数(此函数的参数接收一个setTimeout返回的ID) 暂停setTimeout函数还未执行的代码。

    但这个例子的行为是:setTimeout函数永远不会被执行,因为如果还没有执行setTimeout函数中的代码,就调用了clearTimeout函数,那么就不会执行setTimeout函数中的代码了。

    3.最后是一个正确的例子。

        var Timer
    function DealSomething() {
            //write some code
            Timer =window.setTimeout(function () {
               alert("已经等待超过10分钟,自动关闭页面。");
            }, 600000);
        }
      function StopDeal() {
            clearTimeout(Timer);
        }

    这样,先调用DealSomething(), 因为它使用了函数外部的变量Timer, 现在这个函数是一个闭包了,在10分钟内调用StopDeal()时,就能达到清除setTimeout函数的作用,等过了10分钟时才不会出alert提示了;如果10分钟内不调用StopDeal()函数,那么就会按期执行setTimeout函数了。

    参考链接:http://www.dreamdu.com/javascript/window.clearTimeout/

  • 相关阅读:
    [leetcode-788-Rotated Digits]
    [leetcode-783-Minimum Distance Between BST Nodes]
    [leetcode-775-Global and Local Inversions]
    [leetcode-779-K-th Symbol in Grammar]
    对于网站,APP开发流程的理解
    进程与线程的一个简单解释【摘】
    快速入手Web幻灯片制作
    Spring MVC Hibernate MySQL Integration(集成) CRUD Example Tutorial【摘】
    linux下SVN服务器配置
    Mac OS X 下android环境搭建
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/3509601.html
Copyright © 2011-2022 走看看