Witam dopadły mnie te piekielne callbacki i niestety po dwu dniach poległem . Prosta pętla ona działa ale co z tego jak nie moge swierdzić kiedy ona się skończy!!!. Próbowałem callbacków w pętlach, promise w funkcji którą otoczyłem pętle i biblioteki wait.for-es6. I nie dałem rady, wymyśliłem brzydki ale działający sposób odświeżanych setTimeoutów. Potrzebuję callbacka który po zakończeniu pętli posortuje tablicę i zapisze je do pliku.
days.forEach((item,idx) => { // dla każdego dnia z tablicy days
getPage(item,(html) => { // pobierz stronę (request) html(json string) z url zawierający dzień w item
let data = parsePage( html ); // wybierz tylko te dane które są potrzebne
data.forEach((draw) => { // dla każdej danej
addDrawObj(draw); // dodaj element do tablicy zbiorczej zmienna globalna
});
if (timerId) clearTimeout(timerId); // to ten mój pomysł , zeruj timer porzedni
timerId = setTimeout(callback,2000); // ustaw nowy, jak będzie ostatni element to zadziała callback i dane są skompletowane
});
});
symulacja na asynchronicznym readfile zamiast request jest na pastebin : https://pastebin.com/RjNFkgZ4 w pliku tekstowym jest prosty string json : [{"name": "item1"},{"name": "item2"},{"name": "item3"}] symulujacy trzy dane z jednego dnia jako odpowiedź rest api.
jak to zrobic elegancko ?.
pozdrawiam
AK