Собственно говоря, сама задача заложена в заголовке. Заранее извиняюсь, если данная или похожая тема поднималась на форуме, но я похожей не нашел. SetInterval/setTimeout не подходят из-за рандомного времени выполнения асинхронной функции. Ну и для наглядности простой пример (возможно с ошибками, пример просто для наглядности):
//любое рандомное значение в милисекундах
function randomInteger(min, max) {
var rand = min + Math.random() * (max + 1 - min);
rand = Math.floor(rand);
return rand;
}
function(test){
//тут что-то происходит или вызывается
}
setTimeout(test, ( randomInteger(5, 10000) ) );
//а вот тут требуется повторно (или циклически) продолжать вызывать функцию test.