Come mettere in pausa una funzione in javascript fino a quando una condizione è soddisfatta, non fino a un limite definito in millisecondi è impostato!

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

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. :)

È stato utile?

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.");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top