【问题标题】:How can I write a function(a) which calls another function(b) when it completes?如何编写一个函数(a),它在完成时调用另一个函数(b)?
【发布时间】:2016-06-06 11:51:07
【问题描述】:

我有一个输入列表(type="radio"),当它们被点击时我正在运行一个动画,我也在动画运行时禁用输入。

如何让这个函数在完成运行后调用另一个函数?

function animation(para1, para2, para3, para4) {
   // calling a function to clear the animation for time before
   // this gets called when a input is clicked to run a animation
   // also hides inputs
}

动画完成后,我需要以某种方式调用另一个函数来重新启用输入

【问题讨论】:

  • 你可以使用promise。
  • "如何编写一个函数(a),它在完成时调用另一个函数(b)?" --> function b(){ }; function a(){ b(); };
  • @EddyAk 到达最后一条语句时完成。 b();a 中的最后一条语句。
  • 我试过了,即使动画仍在运行,它也只是完成了所有操作
  • @EddyAk 那么你应该重新表述你的问题。但是当你这样做时,这将是重复的。很明显你没有做任何研究。你不是第一个尝试这样做的人。

标签: javascript jquery function callback


【解决方案1】:

要么使用回调,它们只是函数参数,并且已经存在了很长一段时间,就像这样

function animation(para1, para2, para3, para4, callbackFn) {
  //do the work
  callbackFn(); //work is done, callback can be invoked now
}

或者考虑使用promises,这是 ES6 标准的一部分。如果使用 ES5 或更低版本,也有可以提供 Promise 的库,例如 Kris Kowal's Q

【讨论】:

  • //工作完成,现在可以调用回调。我知道这是需要做的,我需要知道该怎么做
【解决方案2】:

你需要一个回调函数...这是一个回调函数的例子

$("button").click(function(){
   $("p").hide("slow", function(){
      alert("The paragraph is now hidden");
   });
});

【讨论】:

    【解决方案3】:

    CSS 动画结束时有一个事件。而且 CSS 动画比 jQuery 动画更好更快。

    您可以用 CSS 编写动画,使用 jQuery 设置启动动画然后等待其结束的类。

    查看如何detect end of CSS animation

    $(".button").click(function(){
      $(this).addClass("animate");
      $(this).one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend",
                  function(event) {
        // Do something when the transition ends
      });
    });
    

    【讨论】:

    • 你根本不知道OP用的是什么动画。要么要求澄清,要么不根据假设回答糟糕的问题。
    【解决方案4】:

    @Radek Pech - 感谢您为我指明正确的方向。我没有考虑 CSS 动画时间,这使得回调看起来像是被提前触发了。

    【讨论】:

      【解决方案5】:

      看看 Javascript callbacks

      本质上,您可以将一个函数作为参数传递给另一个函数,然后该函数可以执行它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-01
        • 1970-01-01
        • 2018-07-10
        • 1970-01-01
        • 2012-04-07
        • 1970-01-01
        • 1970-01-01
        • 2019-11-09
        相关资源
        最近更新 更多