如何仅在完成另一个函数后执行javascript/jquery函数?
我知道这是一个简单的问题,但我真的不知道怎么做。我在代码中执行两个函数,“luxboxEngine”和“fitToScreen”,后者需要完成前者。如何让“fitToScreen”仅在“luxboxEngine”完成后执行?现在我有了这个,它得到了想要的结果:如何仅在完成另一个函数后执行javascript/jquery函数?,javascript,jquery,function,asynchronous,callback,Javascript,Jquery,Function,Asynchronous,Callback,我知道这是一个简单的问题,但我真的不知道怎么做。我在代码中执行两个函数,“luxboxEngine”和“fitToScreen”,后者需要完成前者。如何让“fitToScreen”仅在“luxboxEngine”完成后执行?现在我有了这个,它得到了想要的结果: luxboxEngine(self); setTimeout(fitToScreen, 1000); …但我知道这不是个好办法。我读过关于回调函数的书,但恐怕我真的不知道它们是什么/如何合并它们。谢谢你的阅读 编辑:正如Sudharsa
luxboxEngine(self);
setTimeout(fitToScreen, 1000);
…但我知道这不是个好办法。我读过关于回调函数的书,但恐怕我真的不知道它们是什么/如何合并它们。谢谢你的阅读
编辑:正如Sudharsan Sri和Brian McGinity在下面回答的那样,回调是解决方案。以下是我用来在程序中获取所需内容的代码:
luxboxEngine(self, function () {
fitToScreen();
});
在luxboxEngine完成后触发fitToScreen函数。像回调一样?将函数作为参数传递,然后调用它:
luxboxEngine(self); //Executes, returns undefined, nothing happens with return value
fitToScreen(); //The first one is done by the time we get here
fitToScreen( function(){luxBoxEginie();} );
function fitToScreen( cb ) {
//// do somethings
cb()
}
或
fitToScreen()作为参数传递到luxboxEngine()。fitToScreen()等待执行,并仅在执行时运行:cb()
使用回调:
luxboxEngine(self , function() { fitToScreen(); });
什么是“luxboxEngine”,它是如何工作的?它是同步的吗?异步的?如果它是异步的,并且没有提供回调或承诺机制(它应该提供,请参阅文档),那么你就没有桨了,只能在独木舟上疯狂地挥舞(例如setTimeout或其他黑客攻击)。Self在JavascriptluxboxEngine中的意思是“这个”,它可以为一大堆东西设置动画,self是一个作为参数传递的变量,其中包含一张要设置动画的图片。@Ber然后它有“完成”事件,没有?@Ber,我刚刚更新了我的答案。。。正在作为参数传递的函数等待调用。。。将其作为参数传递就像定义一个函数,它只在被调用时运行。是的,回调是解决方案。欢迎光临,这是我的荣幸
luxboxEngine(self , function() { fitToScreen(); });