Как приостановить функцию в JavaScript, пока условие не будет выполнено, пока не будет установлен определенный предел в миллисекунде!
-
29-09-2019 - |
Вопрос
Это срочно, и я не мог найти решение для этого. Проблема заключается в следующем:
Я проектирую веб -приложение, которое отправляет несколько команд на несколько машин. Теперь некоторые из команд, которые я имею, требуют дополнительного ввода. Я разработал всплывающее окно в 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.");