首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否在完成调整大小时运行函数(没有underscope.js)?

是否在完成调整大小时运行函数(没有underscope.js)?
EN

Stack Overflow用户
提问于 2017-07-27 05:20:21
回答 1查看 405关注 0票数 2

从控制器中,我检测到$window的resize事件,并在它之后重新启动我的carousel指令。

但问题是,carusel重启了近5-6次。对此我找不到任何有用的解决方案。

代码语言:javascript
复制
angular.element($window).bind('resize', function () {                                
    $scope.$apply(function(){
          $scope.showCarousel = false;      
          $timeout(function(){
             $scope.calculateGamesCount();
             $scope.showCarousel = true; 
          }, 250);              
    });
});

如何检测调整大小事件是否已完成并运行函数?

EN

回答 1

Stack Overflow用户

发布于 2017-07-27 06:22:50

不幸的是,没有像“调整大小完成”这样的事件可供我们挂接。每个像素变化都是它自己的独立事件。如果第三方解决方案是100%不可能的,你可以实现你自己的debounce:

代码语言:javascript
复制
function debounce(f, n){
    let allow_run = true;
    return function(...args){
        if(allow_run){
            allow_run = false;
            setTimeout(_=> allow_run = true, n);
            return f.apply(f, args);
        }
    }
}

window.onresize = debounce(_=> console.log('resizing!'), 250);

本质上,我们有一个看门人,allow_run。如果在门处于“打开”状态时调用去抖动函数,则允许执行,并关闭门,直到超时(n毫秒)到期。如果在“关闭”门的情况下调用去抖动函数,则不会发生任何事情。

demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45337637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档