仅在堆栈中的最后一个执行回调
Callback execution only on last in stack
目前我已经这样设置了,
var elements = $('#one, $two, #three, #four, #six');
var _temp = 0;
elements.hide(0, function(){
/* by default, the callback will be performed to
every single element in stack */
_temp++; // increment temporary cache
// perform actual callback only on last in list
if (_temp == elements.length) {
// do stuff
}
});
但感觉不对,因为如果我想对下面的另一个回调241行做同样的操作,我必须重置_temp
,全局变量就是一团糟。
我该如何简化它?
一种可能的方法是使用闭包:
var elements = $('#one, $two, #three, #four, #six');
elements.hide(0, (function(){
var _temp = 0;
return function(){
_temp++; // increment temporary cache
// perform actual callback only on last in list
if (_temp == elements.length) {
// do stuff
}
};
})());
如果你想更频繁地使用这种模式,你可以创建一个返回回调的函数。
还要注意,.hide()
有一个持续时间作为第一个参数。
尝试在函数中使用静态变量。
还有另一种没有临时变量的方法,它可能对一些人来说可读性较差,并迫使您将选择存储在变量中,但是:
elements.hide(0, function(){
// if last callback (compare raw DOMElements, because jQuery object aren't somehow similar)
if ($(this)[0] === elements.last()[0]) {
// do stuff
}
});
缩小一些行,并完成任务。
相关文章:
- 表追加而不附加最后一个元素
- 无法在Ionic select中预先选择最后一个选项
- 为什么画布形状只在3个画布中的最后一个画布上渲染
- Jquery append oly获取循环Rails中的最后一个elemen
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 多维关联数组的最后一个索引
- 无法获取vis.js最后一个或第一个选定的网络节点
- 循环以检查数组中的最后一个图像
- 从输入值中删除最后一个单词
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 如何从多个复选框中获取最后一个值
- 仅在堆栈中的最后一个执行回调
- Javascript只执行最后一个调用的函数
- RxJS Observable:在最后一个订阅被清除时执行清理
- post请求总是在angularjs函数的最后一个执行(不是按顺序执行)
- 如何在最后一个可拖动元素被拖放后执行操作…
- 使用Mongoose保存多个文档,并在保存最后一个文档时执行操作
- Angularjs是指令中实际执行的最后一个异步调用