Come mettere in pausa una funzione in javascript fino a quando una condizione è soddisfatta, non fino a un limite definito in millisecondi è impostato!
-
29-09-2019 - |
Domanda
questo è urgente e non ho potuto trovare una soluzione ad esso. Il problema è come segue:
io sono la progettazione di una web app, che invia più comandi per più macchine. Ora, alcuni dei comandi che ha richiedere ulteriore input. Ho progettato una finestra pop-up in jQuery che chiedono all'utente di aggiungere questo ulteriore input. il problema è, mentre scorrendo tutti i comandi solo una finestra per l'ultimo comando prescelto si apre ... questo è perché non è in pausa, mentre all'utente di inserire gli ingressi prima di andare a input per un altro comando.
Come posso mettere in pausa una funzione di continuare la sua esecuzione in javascript / jquery?
un esempio in pseudocodice:
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..
}
thx per il vostro aiuto e la pazienza, ho provato tutti i tipi di metodi, senza alcun risultato. :)
Soluzione
Se ho capito bene, penso che si dovrebbe avviare la finestra utilizzando window.showModalDialog () al posto di window.open ().
Si terrà l'esecuzione fino a quando la finestra è chiusa.
Un metodo alternativo è quello di utilizzare la funzione di richiamata.
Altri suggerimenti
Non puoi utilizzare una finestra prompt
per ottenere l'input dell'utente? È modale e sarà pausa esecuzione nel punto in cui è collocato a meno che l'utente annulla la richiesta, o fornisce un valore. E per favore non chiamatelo brutto.
var userValue = prompt("Ask your question");
esempio qui . Aspettare un po 'prima di entrare in un valore o annullare, e notare i timestamp.
Questo è in genere fatto utilizzando le funzioni di callback. Dal momento che si sta utilizzando jQuery già, si potrebbe trovare qualcosa di simile alla Impromptu plug-in utili. Ti permette di fare richieste modali con callback.
Qualcosa di simile (in parte sulla base di esempio 9 dal link qui sotto). Ho postato questo come un demo a 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]);
}
});
La risposta breve è che non si puo 'pausa' di esecuzione di JavaScript. Si può fare qualcosa di simile se si emula una pausa abbastanza bene per i vostri scopi, ma non è la stessa cosa.
var answer;
var myInterval = setInterval(function () {
if (answer != undefined) {
clearInterval(myInterval);
// processing code
}
}, 1000);
answer = prompt("Please enter your name.");