setIntrval не самое лучшее решение так как, если пользователь перейдет на другую вкладку или свернет браузер, то вызовы могут накапливаться и выполняться одновременно, когда пользователь вернется.
Лучше использовать setTimeout:
function ping(url, fn) {
fetch(url);
setTimeout(fn, 10000, url, fn);
}
ping("https://google.com", ping);
Можно сделать повторный вызов уже после ответа с сервера, причем не важно удачный или нет:
function ping(url, fn) {
fetch(url).then((response) => {
setTimeout(fn, 10000, url, fn);
});
}
ping("https://google.com", ping);