绑定莫名其妙,,之前的setTimeout运行,我的网页加载有这个电话

window.setTimeout(function() { self.MakeWaterFall(self) }, 500); 

这.js文件托管其他服务器上,加载网页上类似于像很多JS从CDN的库是加载

问题描述:

的一个JavaScript文件,,而该文件已“硬编码”的setTimeout拨打500毫秒后绑定莫名其妙,,之前的setTimeout运行,我的网页加载有这个电话</p> <pre><code>window.setTimeout(function() { self.MakeWaterFall(self) }, 500); </code></pre> <p>这.js文件托管其他服务器上,加载网页上类似于像很多JS从CDN的库是加载

现在,我想的是'MakeWaterFall'功能,在页面上稍晚运行

我想它的自定义后触发器触发运行,后阿贾克斯数据来自电线和呈现帖子在页面上。

这是绑定触发器,我需要“搬家” MakeWaterFall FN键..

$(window).bind('grid:items:added' , function(){ 
    // .. some custom events on elements + 
    MakeWaterFall(window); 
}) ; 

在本质上,这问题就像“我可以挂钩window.setTimeout运行前阻止一个规范的呼叫和把它移到其他地方,后者在代码中?

也并不是说我有其他一堆,在通过window.setTimeout代码代码等地运行的代码,,我知道,吸:(

感谢

+1

为什么不你在你想要执行的函数的回调函数中调用MakeWaterFall() – marvel308

+1

这两个函数都是异步的吗?如果它们是同步的,它们将一个接一个地运行。如果没有,请使用回调。 – Li357

+0

那么这个其他功能是什么样的?不能只是在它的结尾调用self.MakeWaterfall,或者将它包装到另一个调用它的函数中?还是有一些计时器或异步的事情?在后一种情况下,你确实需要提供更多的上下文。 – GolezTrol

使用一个回调函数是这样的:

function myFunction(callback){

myFunction1();

if(typeof(callback) === "function()"){

myFunction2();

}}"

好,我找到了解决办法,这是非常简单的其实..它incudes此步骤:

1)我确信,我装我custom.js文件早些时候在页面上,在托管的CDN'有问题'的js文件出现在页面上(其中有setTimeout

2)我保留了原生函数,并且制作了我的自定义函数并执行了此操作:

// save original setTimeout function to savedST 
window.savedST = window.setTimeout ; 
// define custom window.setTimeout function and hook to it 
window.setTimeout = function(a, b){ 
    // I'm testing if this calls waterfall fn.. then bounce that f() to other binded event 
    if (a.toString().indexOf('MakeWaterFall') > -1){ 
     $(window).bind('grid:items:added', function(){ 
      a(); 
     }); 
    } else { 
     // run normal or original setTimeout as usual 
     savedST(a, b); 
    } 
} ; 

我敢肯定,这是东西,这将帮助别人,这将需要重写“的setTimeout”和/或“的setInterval”,本地窗口功能

欢呼声,K