Независимо от того, что происходит внутри startJob
, setInterval
будет вызывать его каждые 30 секунд. Это означает, что postProxyToChannel
будет вызываться каждые 30 секунд. Если выдает функция , вы получите необработанное отклонение Promise, но интервал продолжится.
Даже если postProxyToChannel
потребует, скажем, 45 секунд, это не помешает повторному вызову startJob
до завершения предыдущего startJob
.
Если вы хотите убедиться, что startJob
вызывается только через 30 секунд после его окончания, вы можете await
это в цикле for
, а затем await
Обещание, которое разрешается каждые 30 секунд:
(async () => {
for ( let i = 0 ; i < 999999999 ; i ++ ) {
await startJob();
await new Promise(resolve => setTimeout(resolve, 30000));
}
})()
.catch((err) => {
console.log('There was an error', err);
});
Но, вероятно, было бы более разумно иметь рекурсивный вызов startJob
, например:
const startJob = async () => {
try {
await postProxyToChannel();
} catch(e) {
// handle error
}
grabProxies();
setTimeout(startJob, 30000);
};
startJob();