如何使php在其余api调用之间等待几秒钟

时间:2018-12-06 21:47:51

标签: javascript php jquery ajax api

我当前正在调用返回xml的api!我正在使用ajax的Api在两次调用之间需要250毫秒,据我了解,ajax进行异步调用,因此所有调用都同时发送,一旦调用到达要等待250毫秒,我如何强制我的php脚本之间在发出呼叫之前。我试图在无法正常工作的js中使用setTimeout HTML

<div class='grid-item' data-grid='13435'></div>
<div class='grid-item' data-grid='15339'></div>
<div class='grid-item' data-grid='14656'></div>
<div class='grid-item' data-grid='13447'></div>
<div class='grid-item' data-grid='12243'></div>

JS

$(".grid-item").each(function(i) {
  var items = [];
  var prod_id = $(this).attr('data-grid');

  $.ajax({
    type: 'POST',
    url: 'test.php',
    dataType: 'xml',
    data: {
      grid: 'set',
      prod_id: prod_id
    },
    success: function(data) {
      $(data).find('a\\:Inventory').each(function(index, value) {
        var name = $(this).find('Name').html();
        var age = $(this).find('Age').html();

        var display = `
          <div>
            <div class='col-xs-12 text-center no-padding'>
            <div class='col-xs-3 no-padding grid-data-box'>${name} </div>
            <div class='col-xs-3 no-padding grid-data-box'>${age}</div>
          </div>
        `;

        items.push({
          name: name,
          age: age,
        });

        $('[data-grid="'+prod_id+'"]').append(display)  ;
      });

      console.log(items);
    }
  });
});

PHP

if(isset($_POST['grid'])){

echo file_get_contents(file_path) ; 
}

1 个答案:

答案 0 :(得分:2)

由于ajax是异步的,因此可以通过将超时时间乘以earth = Spell("earth", [StaticDice('s10', 10)]) 索引来错开ajax请求。在下面的示例中,每个循环的第一次迭代将具有500ms的超时时间,第二次1000ms的超时时间,等等。

.each()