【问题标题】:How to execute a javascript/jquery function only after the completion of another function?如何仅在完成另一个函数后才执行 javascript/jquery 函数?
【发布时间】:2014-02-11 03:47:54
【问题描述】:

我知道这是一个简单的问题,但我真的不知道该怎么做。我在我的代码中执行两个函数,“luxboxEngine”和“fitToScreen”,后者需要完成前者。如何告诉“fitToScreen”仅在“luxboxEngine”完成后执行?现在我有这个,它得到了预期的结果:

luxboxEngine(self);
setTimeout(fitToScreen, 1000);

...但我知道这不是一个好的解决方案。我读过回调函数,但恐怕我并没有真正了解它们是什么/如何合并它们。谢谢阅读。

编辑:正如 Sudharsan Sri 和 Brian McGinity 在下面回答的那样,回调是解决方案。这是我用来在程序中获取所需内容的代码:

    luxboxEngine(self, function () {
       fitToScreen(); 
    });

在 luxboxEngine 完成后触发 fitToScreen 函数。

【问题讨论】:

  • 什么是“luxboxEngine”,它是如何工作的?是同步的吗?异步?如果它是异步的并且不提供回调或 Promise 机制(它应该,请参阅文档),那么您将在没有桨的情况下陷入困境并且不得不回退到疯狂地甩动(例如 setTimeout或其他黑客)在独木舟中。
  • Self 在 Javascript 中的意思是“这个”
  • luxboxEngine 为一大堆东西制作动画,而 self 是一个作为参数传递的变量,其中包含要制作动画的图片。
  • @Ber 那么它有“完成”事件,不是吗?
  • @Ber,我刚刚更新了我的答案......作为参数传递的函数等待被调用......作为参数传递它就像定义一个函数,它只在调用时运行。

标签: javascript jquery function asynchronous callback


【解决方案1】:

使用回调:

luxboxEngine(self , function() { fitToScreen(); }); 

【讨论】:

  • 欢迎,这是我的荣幸
【解决方案2】:

像回调?将函数作为参数传递,然后调用它:

 fitToScreen( function(){luxBoxEginie();}  );

 function fitToScreen( cb ) {
  //// do somethings
  cb()
 }

luxboxEngine(self, function (){ fitToScreen(); });

function luxboxEngine( s, cb)} {
 // do somethings
 cb();  //execute the callback function
}

fitToScreen() 作为参数传递给 luxboxEngine()。 fitToScreen() 等待执行,并且仅在您执行时运行:cb()

【讨论】:

  • 是的,回调就是解决方案。
【解决方案3】:
luxboxEngine(self); //Executes, returns undefined, nothing happens with return value
fitToScreen(); //The first one is done by the time we get here

【讨论】:

    猜你喜欢
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多