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/

  • 相关阅读:
    jquery 功能优化
    MySQL Group Replication集群部署,基于官方文档
    django-filter跨表过滤,区间过滤
    xadmin默认显示用户名,密码,确认密码,添加字段
    函数的装饰器修复技术(@wraps)
    redis的特点总结-安装及基本命令的使用
    前后台分离时-后台处理跨域
    djangorestframework-jwt模块
    drf模块请求组件,响应组件,异常组件
    html 中画半圆的方法
  • 原文地址:https://www.cnblogs.com/liuzhendong/p/3509601.html
Copyright © 2011-2022 走看看