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);
});
}
``
你对 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);