javascript - 停止执行一些 JavaScript 代码

标签 javascript jquery ajax

我有多个使用 javascript 代码作为响应的 ajax 请求,一旦加载新代码,我需要停止执行以前的 javascript 代码,我的意思是停止间隔、函数、超时...

我的代码:

$.get("/ucmd", params, function(data) {
  var $data = document.createElement("div");
  $data.innerHTML = data;
  var em = $data.getElementsByTagName("*");
  for(var i=0;i<em.length;i++)
  {
    if(em[i].tagName === "SCRIPT")
    {
     if($("#"+em[i].id)) document.body.removeChild($("#"+em[i].id));
     var script = document.createElement("script");
     script.id = em[i].id;
     script.language="javascript";
     script.type="text/javascript";
     script.innerHTML = em[i].innerHTML;
     document.body.appendChild(script);
    }
  }
});

是否可以在加载新代码时停止执行先前的代码?

P.S:我想使用纯 JavaScript 代码。

我的解决方案:

  window.$timeout = {};
  window.$interval = {};

  window.$setTimeout = window.setTimeout;
  window.$setInterval = window.setInterval;
  window.$clearTimeout = window.clearTimeout;
  window.$clearInterval = window.clearInterval;

  window.setTimeout = function(id, code, delay) {
    if(typeof $timeout[id] !== "undefined") clearTimeout(id);
    $timeout[id] = $setTimeout(code, delay);
  }; 

  window.clearTimeout = function(id) {
    $clearInterval($timeout[id]);
    delete $timeout[id];
  };

  window.setInterval = function(id, code, delay) {
    if(typeof $interval[id] !== "undefined") clearInterval(id);
    $interval[id] = $setInterval(code, delay);
  }; 

  window.clearTimeout = function(id) {
    $clearInterval($interval[id]);
    delete $interval[id];
  };

最佳答案

要使用timeout()停止现有调用,您可以使用:

clearTimeout(t);

您也许可以保留一个全局变量来记录调用函数的次数,并围绕该变量编写clearTimeout()...

调用电话如下:

t = setTimeout("thing()",1000);

关于javascript - 停止执行一些 JavaScript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11328912/

相关文章:

javascript - 单击 anchor 时使用 jquery 添加类

javascript - Node.js 表达嵌套路由

jquery - 在 html 中使用 css 放置悬停或单击输入类型

javascript - 变量 jquery 参数名称

mysql - 使用模型查询时,Codeigniter 无法使用 Ajax-json_encode

javascript - 检查 three.js 中是否有与另一个 Object3D 特定距离的 Object3D

javascript - JQuery 关闭按钮事件处理程序

javascript - 防止 jQuerys .change() 在页面加载时运行

asp.net - 通过 AJAX 加载 Web 应用程序内容

javascript - 使 JQuery 自动完成始终显示特定选项