Как приостановить функцию в JavaScript, пока условие не будет выполнено, пока не будет установлен определенный предел в миллисекунде!

StackOverflow https://stackoverflow.com/questions/3105709

Вопрос

Это срочно, и я не мог найти решение для этого. Проблема заключается в следующем:

Я проектирую веб -приложение, которое отправляет несколько команд на несколько машин. Теперь некоторые из команд, которые я имею, требуют дополнительного ввода. Я разработал всплывающее окно в jQuery, которое просит пользователя добавить этот дополнительный ввод. Проблема заключается в том, чтобы зацикливаться на всех командах только окно для последней выбранной команды появляется ... это потому, что оно не приостанавливается, в то время как пользователь вводит входы, прежде чем отправиться в ввод в другую команду.

Как я могу приостановить функцию от продолжения выполнения его исполнения в JavaScript/jQuery?

Пример в псевдокоде:

loop each command
{
  for selected command popup windows;
  // pause until user finishes input then go to
  // next line where any function is processed

  function(); //then loop again--> pause --> when user finishes continue to function() etc..

}

Спасибо за вашу помощь и терпение, я попробовал все виды методов без какого -либо результата. :)

Это было полезно?

Решение

Если я правильно вас понимаю, я думаю, что вы должны запустить окно с помощью window.showmodaldialog () вместо window.open ().
Он будет держать исполнение, пока диалог не будет закрыт.

Альтернативный способ - использовать функцию обратного вызова.

Другие советы

Разве вы не можете использовать prompt Диалог, чтобы получить пользовательский ввод? Это модально и будет Пауза Выполнение в точке, где оно помещается, если пользователь не отменит подсказку или не предоставляет значение. И, пожалуйста, не называйте это безобразным.

var userValue = prompt("Ask your question");

Видеть Пример здесь. Отказ Подождите некоторое время, прежде чем ввести значение или отменить, и обратите внимание на временные метки.

Обычно это делается с использованием функций обратного вызова. Поскольку вы уже используете jQuery, вы можете найти что -то вроде Импровизированный плагин полезен. Это позволяет вам делать модальные подсказки с обратными вызовами.

Что-то вроде (частично основано на примере 9 из вышеуказанной ссылки). Я опубликовал это как демо в http://jsfiddle.net/28d3c/2/ .

var ind = 0;
var values = [];

var count = 3;

function nextPrompt(done)
{
     function processPrompt(v, m, f)
     {
          if(v != undefined)
          {
            var input = f.alertName;
            values[ind] = input;
          }
          if(++ind < count)
          {
            nextPrompt(done);
          }
          else
          {
            done();
          }
    }

    var txt = 'Please enter value ' + ind + ':  <br /><input type="text" id="alertName" name="alertName" value="name here" />';    
    $.prompt(txt,{
            callback: processPrompt,
            buttons: { Hey: 'Hello', Bye: 'Good Bye' }
    });
}

nextPrompt(function()
{
    for(var i = 0; i < count; i++)
    {
      alert(values[i]);   
    }
});

Краткий ответ заключается в том, что вы не можете «приостановить» выполнение JavaScript. Вы можете сделать что -то подобное, если это достаточно хорошо имитирует паузу для ваших целей, но это не одно и то же.

var answer;

var myInterval = setInterval(function () {
  if (answer != undefined) {
    clearInterval(myInterval);
    // processing code
  }
}, 1000);

answer = prompt("Please enter your name.");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top