Поскольку обратный вызов является асинхронным (по крайней мере, в том смысле, что он ожидает, что пользователь что-то сделает), может быть проще обработать то, что вам нужно внутри обратного вызова:
function confirm() {
jConfirm('are you sure?', 'Confirmation Dialog', function(r) {
if (r) doSomething();
});
}
@ klogan [комментарии]
Я полагаю, вы получили это от здесь ?
На странице вы найдете ответ: (см. Использование )
Эти методы не возвращают те же значения, что и verify () и prompt (). Вы должны получить доступ к полученным значениям с помощью функции обратного вызова. (См. Демо для более подробной информации.)
@ klogan
Смысл, который я пытаюсь подчеркнуть, заключается в том, что на самом деле нет простого способа выполнить то, что вы хотите. Вы пытаетесь сопоставить процедурное и событийное программирование - что-то, что JavaScript не помогает вам делать.
Самое простое (хотя рискованное ) решение - использовать псевдо-бесконечный цикл. Но если callback
никогда не вызывается, у вас теперь есть реальный бесконечный цикл. И, в зависимости от движка JavaScript, вы можете убить ожидание браузера.
Очко: Лучше всего избегать этого , пытаясь заставить событийно-управляемый процесс стать процедурным.
function confirm() {
var result = false;
var response = false;
jConfirm('are you sure?', 'Confirmation Dialog',
function(r) {
result = r;
response = true;
});
while(!response) continue; // wait
return result;
}