【问题标题】:Bind somehow,, before setTimeout runs在 setTimeout 运行之前以某种方式绑定
【发布时间】:2017-08-04 13:37:10
【问题描述】:

我的网页加载的一个 javascript 文件有这个调用

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

该 .js 文件托管在其他服务器上并加载到网页上,类似于加载来自 CDN 的许多 js 库,并且该文件在 500 毫秒后具有“硬编码”setTimeout 调用

现在,我希望 'MakeWaterFall' 函数稍后在页面上运行

我希望它在自定义触发器触发后运行,在 ajax 数据通过网络传输并在页面上呈现帖子后运行。

这是我需要将 MakeWaterFall fn '移动'到的绑定触发器..

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

这个问题本质上就像'我可以在 window.setTimeout 运行之前连接并阻止一个规范调用并将其移动到其他地方,后者在代码中'?

也不是说我有其他一堆代码通过 window.setTimeout 代码在其他地方运行,我知道这很糟糕:(

谢谢

【问题讨论】:

  • 为什么不在要先执行的函数的回调中调用MakeWaterFall()
  • 两个函数都是异步的吗?如果它们是同步的,它们将一个接一个地运行。如果没有,请使用回调。
  • 那么这个其他功能是什么样的呢?不能只是在它的末尾调用 self.MakeWaterfall ,或者将它包装到另一个调用两者的函数中?或者是否有一些定时器或异步的东西正在发生?在后一种情况下,您确实需要提供更多上下文。
  • @marvel308 我无法直接进行回调,请参阅我更新的问题..
  • @GolezTrol 我已经更新了问题,看看现在是否更有意义.. 我试图让它更容易理解..

标签: javascript jquery callback visual-composer


【解决方案1】:

使用这样的回调函数:

function myFunction(callback){

myFunction1();

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

myFunction2();

}}"

【讨论】:

    【解决方案2】:

    好的,我找到了一个解决方案,实际上它非常简单.. 它包含以下步骤:

    1) 在托管的 CDN '有问题' js 文件出现在页面之前(其中包含 setTimeout),我确保我在页面上较早加载了我的 custom.js 文件

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2015-08-09
      • 2016-10-24
      • 2016-02-27
      相关资源
      最近更新 更多