javascript - 如何输出 javascript 并使 sleep 或 wait 在 foreach 循环中工作

标签 javascript php jquery arrays

我有一个 foreach 循环,它使用变量数组通过 ajax 调用生成动态 javascript。假设我有一个包含 10 个变量的数组,需要创建 10 个不同的 JS 脚本。这些脚本不应立即执行,它们应至少有 1-2 秒的延迟。但是,我无法通过 sleep 或等待来实现这一点。这是我的代码:

<?php
foreach ($one as $two) {
$somevariable = $two['sth'];
?>

<script type="text/javascript">
$( document ).ready(function() {
  var somevariable = <?php echo json_encode($somevariable); ?>;
  // JS code with ajax call, using somevariable
});
</script>

<?php
sleep(2); // doesn't work, everything is executed at once
wait(2); // doesn't work, everything is executed at once
}
?>

我做错了什么?如果我回显脚本,代码会工作吗?我想避免这种情况,因为 JS 代码相当长且复杂。

最佳答案

您可以尝试这样的操作:首先,从您的 php 代码形成一个 javascript 数组。

<?php
foreach ($one as $two) {
    $somevariable[] = "'".json_encode($two['sth'])."'";
}
$jsArray = '['.implode(',',$somevariable).']';
?>

然后将数组传递给 JavaScript 并以 2 秒的间隔运行循环。

<script type="text/javascript">
$( document ).ready(function() {
  var somevariablearray = <?php echo $jsArray; ?>;
  var ln = somevariablearray.length();
  for (i = 0; i < ln; i++) {
      var somevariable = somevariablearray[i];
      setTimeout(function(){
          console.log("Wait 2 sec before next call");
      }, 2000);
      // JS code with ajax call, using somevariable
  }
});
</script>

代码未经测试,可能无法按预期工作,但是,只是为了给您一个总体思路。

关于javascript - 如何输出 javascript 并使 sleep 或 wait 在 foreach 循环中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39713524/

相关文章:

javascript - 从 rxjs 可以观察到

jquery - 强制 Bootstrap 3 移动布局

jQuery 如果复选框被选中

php - 为组织结构图遍历未知级别的用户

Jquery .style 未定义

javascript - 将元素从一个列表框移动到另一个列表框

javascript - 如何将 1 添加到 javaScript 变量?

javascript - Nodejs Express3 使用 session 检查用户是否登录

php - Apache httpd 在 Linux 服务器上挂起

javascript - 根据所选项目数量回显