@@ -378,7 +378,8 @@ export class InnerSlider extends React.Component {
378378      beforeChange, 
379379      onLazyLoad, 
380380      speed, 
381-       afterChange
381+       afterChange, 
382+       waitForAnimate
382383    }  =  this . props ; 
383384    // capture currentslide before state is updated 
384385    const  currentSlide  =  this . state . currentSlide ; 
@@ -395,9 +396,8 @@ export class InnerSlider extends React.Component {
395396      value  =>  this . state . lazyLoadedList . indexOf ( value )  <  0 
396397    ) ; 
397398    onLazyLoad  &&  slidesToLoad . length  >  0  &&  onLazyLoad ( slidesToLoad ) ; 
398-     if  ( ! this . props . waitForAnimate  &&  this . animationEndCallback )  { 
399+     if  ( ! waitForAnimate  &&  this . animationEndCallback )  { 
399400      clearTimeout ( this . animationEndCallback ) ; 
400-       afterChange  &&  afterChange ( currentSlide ) ; 
401401      delete  this . animationEndCallback ; 
402402    } 
403403    this . setState ( state ,  ( )  =>  { 
@@ -406,17 +406,30 @@ export class InnerSlider extends React.Component {
406406        this . asNavForIndex  =  index ; 
407407        asNavFor . innerSlider . slideHandler ( index ) ; 
408408      } 
409+ 
410+       if  ( ! waitForAnimate  &&  afterChange )  { 
411+         afterChange ( state . currentSlide ) ; 
412+       } 
413+ 
409414      if  ( ! nextState )  return ; 
415+ 
410416      this . animationEndCallback  =  setTimeout ( ( )  =>  { 
411417        const  {  animating,  ...firstBatch  }  =  nextState ; 
412418        this . setState ( firstBatch ,  ( )  =>  { 
413419          this . callbackTimers . push ( 
414420            setTimeout ( ( )  =>  this . setState ( {  animating } ) ,  10 ) 
415421          ) ; 
416-           afterChange  &&  afterChange ( state . currentSlide ) ; 
417422          delete  this . animationEndCallback ; 
418423        } ) ; 
419424      } ,  speed ) ; 
425+ 
426+       // Ensure we always fire afterChange callbacks even if we are not 
427+       // animating or if the animation gets interrupted by a window resize. 
428+       if  ( waitForAnimate  &&  afterChange )  { 
429+         this . callbackTimers . push ( 
430+           setTimeout ( ( )  =>  afterChange ( state . currentSlide ) ,  speed ) 
431+         ) ; 
432+       } 
420433    } ) ; 
421434  } ; 
422435  changeSlide  =  ( options ,  dontAnimate  =  false )  =>  { 
0 commit comments