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/

  • 相关阅读:
    HttpClient上传文件(转)
    数据库查询结果导出到excel
    docker报错“net/http: TLS handshake timeout”
    java线程的几个状态和锁的作用范围
    简单管理WPF及Winform所有弹出窗体
    FastJson学习
    基于消息中间件实现流量削峰
    pandas
    DBSCAN
    A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/3509601.html
Copyright © 2011-2022 走看看