Zalozmy ze laduje sobie jakies pliki przez Promise.all i teraz jesli sie kilka nie zaladuje, to chcialbym zapisac te ktore sie zaladowaly w 1 tablicy a wszystkie errory chcialbym zapisac w 2giej tablicy i sprobowac je zaladowac ponownie. Kiedy sie wszystko zaladuje lub po 3 probach zwraca wynik a wiec mam cos takiego:
async getOrdersBook(){
let snapshoot = {};
if(!this.isOrderBookPending)
{
this.isOrderBookPending = true;
this.getSnapshootOrderBook(allowedArr) <--------------
.then(result =>{
this.isOrderBookPending = false;
this.orderBook = result;
})
.catch(e => console.log("getOrdersBook error " + e))
utils.logWithTime(" zwraca orderbook ")
}
return this.orderBook;
}
async getSnapshootOrderBook(tickersArr) <----------------
{
let fetchErrorPairs = [];
let toValidateArr = []
let prepareSnapshotArr = tickersArr;
let count = 0;
do{
this.prepareSnapshootOrdersBook(prepareSnapshotArr) <-------------------
.then(resultArr => {
fetchErrorPairs = [];
resultArr.forEach((element, index) => {
if(element.error)
{
fetchErrorPairs.push({symbol: element.pair});
}
else{
toValidateArr.push(element);
}
})
prepareSnapshotArr = fetchErrorPairs;
count++;
if(fetchErrorPairs.length = 0 || count > 2)
return toValidateArr;
})
}while(fetchErrorPairs.length > 0 || count > 3)
}
async prepareSnapshootOrdersBook(tickersArr) <-----------------
{
let promises = [];
tickersArr.forEach(ele => {
promises.push(this.getOrderBook(address))
})
return Promise.all(promises.map(p => p.catch(e =>
console.log("some error :" + e)))).then(result => {
return result;
})
}
Mozna cos takiego zrobic ? Zeby Promise.all staralo sie cos zaladowac 2-3 razy i zaladowane pliki gdzies zapisywalo i staralo sie powtorzyc ladowanie plikow, ktore nie chcialy sie zaladowac za 1szym razem i dopiero po kilku probach zwracalo wszystkie te ktore udalo sie zaladowaly za 1szym i 2gim razem?