如何暂停JavaScript中的功能,直到满足条件为止,直到设置了毫秒中的定义限制为止!

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

这是紧迫的,我找不到解决方案。问题如下:

我正在设计一个Web应用程序,该应用将多个命令发送到多个机器。现在,我需要的一些命令需要其他输入。我设计了一个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..

}

THX为您的帮助和耐心,我尝试了各种方法,没有任何结果。 :)

有帮助吗?

解决方案

如果我正确理解您,我认为您应该使用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