javascript - 如何在具有多个回调的函数中获取最后一个回调?

标签 javascript jquery callback

我有一个包含大量 jQuery 的 showMain() 函数 .show("slow", callback)方法,并且这些回调中的每一个仅在相应的慢速“动画”完成时触发。如何编写一个 showMain(callback) 函数,它的回调只会被触发 一次 并且在 所有 动画完成之后?

理论上,假设我有这组函数

function foo1(callback){
  //do something
  callback();
}

function foo2(callback){
  //do something
  callback();
}

function foo(callback){
  foo1(callback);
  foo2(callback);
}

foo(function(){
  alert("Hello");
});

如何编写一个只调用其回调的函数一次,并且最后次执行?

如果我这样写,回调会被触发两次。

最佳答案

如果你知道调用 show 的次数,如何维护一个计数器,

var callback = function() {....} // the function you want to execute when all done
var itemsToShow = 4; // just an example
var slowCallback = function(){
    itemsToShow--;
    if(itemsToShow===0) {
        callback();
    }
};
$(...).show('slow', slowCallback);
$(...).show('slow', slowCallback);
$(...).show('slow', slowCallback);
$(...).show('slow', slowCallback);

注意:只有当您知道将调用多少次 .show 时它才会起作用,否则将计数器初始化为 0 并递增每个 show 调用

关于javascript - 如何在具有多个回调的函数中获取最后一个回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45111520/

相关文章:

javascript - 如何使 Canvas 达到主体的宽度和高度,同时不拉伸(stretch)或模糊绘图?

javascript - 反序列化 JSON 日期无时区

javascript - 如何在使用辅助类添加和删除类时应用过渡

javascript - 带有特殊字符的JS元素标签

Javascript - 让一个 div 淡入,停留一段时间,淡出然后删除它

c# - ASP.NET - Ajax.BeginForm OnSuccess 回调与参数

javascript - TypeScript 库的存储库应该包含 JS 版本吗?

javascript - 文本中的动画,从右到左隐藏文本已安装

继承类上的 C++ OpenCV mouseCallback

javascript - strip 结帐,自定义集成 : how to detect abort?