Waiting for all conditions



  • Several conditions must be met

    1. End of general timer (_TimeOver);

    2. End of current timer (_CurrentTimer);

    3. AudioInstructionEnd.

    Event 1 can be captured through a deferred object. And with events two and three, there are problems - every push on the button is updating their condition. The logic for these two events, I understand, is unlikely to be different.

    It's gonna be like,

    $.when(_TimeOver, _CurrentTimer, _AudioInstructionEnd).then(Finish); //когда выполнены все условия запустить функцию финиш
    


  • $(function(){
      // В Deferred-объектах делаем что-то, при завершении, вызываем resolve для изменения состояния
      // В примерах это просто таймеры
      let _TimeOver = $.Deferred(obj => {
        setTimeout(() => obj.resolve(), 1500);
      });
      let _CurrentTimer = $.Deferred(obj => {
        setTimeout(() => obj.resolve(), 1700);
      });
      let _AudioInstructionEnd = $.Deferred(obj => {
        setTimeout(() => obj.resolve(), 2000);
      });
    

    // Собираем все Deffered-объекты в один и когда он успешно разрешится, выполнится done, иначе - fail
    $.when(_TimeOver, _CurrentTimer, _AudioInstructionEnd).done(r => console.info('Ho-ho-ho!')).fail(e => console.info(':('));
    });

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2