Сделать асинхронный диалог jQuery синхронным?

В настоящее время я работаю над заменой "alert '/" confirm "диалоговым окном jquery.

Но большинство устаревших кодов написано асинхронным способом, что затрудняет их изменение. Есть ли способ заставить диалог jquery работать синхронно? (не используйте цикл или функцию обратного вызова)

   For example:
   function run()
   { 
      var result = confirm("yes or no");
      alert( result );
      \\more codes here
   }

В этом примере предупреждение и другие коды будут выполняться после выбора пользователя.

Если мы используем диалог jquery var result = $ dialog.open () Он продолжит выполнение предупреждения, которое является асинхронным.

В настоящее время я решил использовать функцию обратного вызова в функции OK | Отмена. Например:

    OK: function ()
   {
       $dialog.close();
       alert("yes");
       //more codes here
    }

Этот метод работает, но сложно сделать все синхронные коды асинхронными, что требует значительных изменений (см. Следующий пример). Итак, я ищу синхронный диалог jQuery, возможно ли это ??

Например: (Реальные коды намного сложнее, чем в следующем примере)

     function f1()
    {
          if ( confirm("hello") )    f2();
          alert("no");
    } 

    function f2()
    {
          if( confirm("world") )    f3();
          alert("no");
    }

    function f3()
    {
          return confirm("!") ;
    }

Другой пример:

vendorObject.on('some-event', function() {
    if(confirm("Do you really want to do that?")) {
        return true;
    }
    else {
        return false; // cancel the event
    }
});

... здесь объект vendor запускает событие, которое должно быть отменено, если пользователь подтвердит. Событие может быть отменено, только если обработчик события возвращает false - синхронно.

37
задан Richard JP Le Guen 6 December 2011 в 16:17
поделиться