仅在不可完成的异步函数完成后才执行代码

时间:2017-08-04 23:30:41

标签: javascript jquery asynchronous promise deferred

我想在flexslider()函数完成后才执行我的代码。问题是flexslider()没有返回承诺或其他的承诺。

所以我用setTimeout应用了这个讨厌的解决方法,我想摆脱它。如何在flexslider初始化后重构此代码并执行我的代码?

(function($) {
    $('.flexslider').flexslider({
        animation: "slide",
        controlNav: false
    });
    setTimeout(function() {
        var $navBar = $('.primary-nav');
        var navbarPosition = $navBar.offset().top;
        $(window).scroll(function() {
            var scrollPosition = $(this).scrollTop();

            if (scrollPosition >= navbarPosition) {
                $navBar.addClass('navbar-fixed');
            } else {
                $navBar.removeClass('navbar-fixed');
            }
        });
    }, 1000);
})(jQuery);   

1 个答案:

答案 0 :(得分:1)

如何使用start:

$('.flexslider').flexslider({
  animation: "slide",
  controlNav: false,
  start: function(){
    // do something....
  }
});

Documentation