class Balancer {
constructor(kwArr, timeout) {
this._i = 0;
this._kwArr = kwArr;
this._tikTimeout = timeout;
this.start();
}
start() {
this._instance = setInterval( () => { this._tik(); }, this._tikTimeout );
}
stop() {
clearInterval(this._instance);
}
_tik() {
if(this._i < this._kwArr.length) {
var kw = this._kwArr[this._i++];
requestFunc(kwArr.url);
} else {
this.stop();
}
}
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function doRequest(urls){
var url = urls.shift();
if( ! url){
return Promise.resolve();
}
return request(url)
.then(() => {
return sleep(5000);
})
.then(() => {
return doRequest(urls);
});
}
doRequest([
'http://google.com',
'http://ya.ru'
])
.then(() => {
// complete
})
.catch(err => {
console.error(err);
})
async function doRequest(urls){
var url = urls.shift();
if( ! url){
console.log("Все запросы выполнены");
//запускаем процесс который нужен после перебора всех элементов
}
//выполняем запрос который вернет промис
await getData(url); //запрос данных с сервера. getData(url) указан как пример
//ждем выполнения таймера
await new Promise(resolve => setTimeout(resolve, 1000)); //1000 - врем ожидания в ms
//рекурсивно запускаем функцию с обрезанным shift() массивом urls
await elevator(phIds);
}
//осталось запустить функцию передав массив
doRequest([
'http://google.com',
'http://ya.ru'
]);