2013-03-13 3 views
0

Я хочу написать функцию JavaScript, такую ​​как prompt() или confirm(), где выполнение строки ждет, пока упомянутая функция ничего не вернет.Как написать функцию JavaScript, например prompt/confirm

Скажите, у меня есть функция abc(), которая откроет всплывающее окно и вернет значение. Я хочу провести выполнение там, где была вызвана функция.

function abc(){ 
     ---------- 
     return ''; 
    } 

    function abc_caller(){ 
     var x = abc(); 
     alert(x); 
    } 

Может ли кто-нибудь помочь мне в этом отношении?

+0

* Возможный дубликат: * http://stackoverflow.com/a/1729684/1563422 –

+0

Сделайте свою функцию чем-то, что держит управление и не вернет его обратно –

+0

@DannyBeckett Не совсем. Я думаю, что OP фактически хочет написать синхронную функцию, которая ** блокирует **. –

ответ

0

Ваш код должен быть -

function abc_caller(){ 
     var x = abc(); 
     var r=confirm("Your value is " + x); 
     if (r==true) 
     { 
      alert("You pressed OK!") 
     } 
     else 
     { 
      alert("You pressed Cancel!") 
     } 
    } 

Больше примеров в http://www.w3schools.com/jsref/met_win_confirm.asp.

Надеюсь, это поможет вам.

0

Это не то, что разработчики браузеров хотят, чтобы вы сделали. Если часть Javascript не отвечает в течение определенного времени, браузер начнет думать, что что-то не так, и спросит пользователя, хочет ли он остановить запуск javascript.

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

+0

Извините, не видел вашего ответа, пока я печатал мой :) – Ramunas

0

Вы clould использовать функцию обратного вызова для этого:
ваша функция

function abc(callback){ 
    // whatever code here 
    var result = ""; // or whatever processing result would be 

    if (callback) 
    { 
     callback(result); 
    } 
} 

использование:

abc(function(result){ 
    alert(result); 
}); 

Edit: Я думаю, что это что-то подобное тому, что @mrhobo предлагал

Смежные вопросы