如何使用 setInterval 同时运行 ajax 请求?

问题描述 投票:0回答:1

promise2 上的 ajax 直到第一个 ajax 完成后才运行。我需要这两个同时运行。当调用 mixexport_exe 时,它会每 500 毫秒运行一次 promise2。

function mixexport_exe(opn) {
 mixdownactive = 1;
  getid('tool_mix_area').innerHTML = 'loading...';

  const promise1 = new Promise((resolve, reject) => {
    $.ajax({
      url: 'includes/ffmpeg_export.php?callFunction=mixexport_exe&version_id=<?=$version_dta[id] ?>&version_creaid=<?=$version_dta[version_id] ?>&exeoption=' + opn,
      success: function(data) {
        getid('tool_mix_area').innerHTML = data;
        resolve(data);
      },
      error: function(error) {
        reject(error);
      }
    });
  });

  const promise2 = new Promise((resolve, reject) => {
    setInterval(() => { 
  $.ajax({
        url: 'includes/ajax.php?callFunction=getrenderstatus',
        success: function(data) {
          console.log(data);
     
        },
        error: function(error) {
          reject(error);
        }
      });
    }, 500);
  });

  Promise.all([promise1, promise2])
    .then((values) => {
      console.log(values);
    })
    .catch((error) => {
      console.error(error);
    });
}
``
javascript ajax
1个回答
0
投票

你对 setInterval 有误解,当你调用 setInterval 时,它并没有立即执行函数。它等待延迟。如果你想让它立即触发,你需要将它分解成一个函数并调用它,然后进行间隔。

function makeCall() {
  $.ajax({
    url: 'includes/ajax.php?callFunction=getrenderstatus',
    success: function(data) {
      console.log(data);
    },
    error: function(error) {
      reject(error);
    }
  });
}

makeCall();
setInterval(makeCall, 500);
© www.soinside.com 2019 - 2024. All rights reserved.