В настоящее время я работаю над заменой "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
}
});
... здесь объект-продавец запускает событие, которое должно быть отменено, если пользователь подтверждает. Событие может быть отменено только в том случае, если обработчик события возвращает false
- синхронно.