Async await resolve - odpalanie funkcji ze zwolnieniem

Async await resolve - odpalanie funkcji ze zwolnieniem
CH
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:1
0

Hej

Średnio znam się na js a w tworzonym projekcie napotkałem na problem.
Odpalam kilka razy (jedna po drugiej) funkcje. Robię to, ponieważ strona jest w vue.js i kliknięcie w jeden element powoduje wyświetlenie HTML więc muszę zwolnić proces.
Mój obecny kod wygląda tak (ogólnie działa ale nie do końca dobrze):

Kopiuj
simulateMouseClick(document.querySelector(firstSelect));

            setTimeout(() => { simulateMouseClick(document.querySelector(firstSelectChosenOption))});
            setTimeout(() => { simulateMouseClick(document.querySelector(secondSelect))});
            setTimeout(() => { simulateMouseClick(document.querySelector(secondSelectChosenOption))});
            setTimeout(() => { simulateMouseClick(document.querySelector(thirdSelect))});
            setTimeout(() => { simulateMouseClick(document.querySelector(thirdSelectChosenOption))});

Z tego co wyczytałem to powinienem zrobić to przy użyciu async, await oraz resolve (nie wiem czy wtedy setTimeout będzie potrzebne) ale nie jestem w stanie tego ogarnąć.

Z góry dzięki za odpowiedzi.

Pozdrawiam, Chasil

ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Wrocław
2

Jeśli to jest swojego rodzaju bot, który ma klikać w element to czysty timeout nigdy nie jest dobrym sposobem. Bardziej szedłbym w kierunku rozwiązania jakie posiada selenium webdriver - waitUntil. Można to spokojnie wysymulować w js. Funkcja, która np przez 15 sek będzie czekać aż element się pojawi i dopiero w niego kliknie.

edit:

Dokładnie coś takiego. Miałem już sam coś naklepać ale na SO jest idealny przykład :D (odp od Ioannis Tsiokos)

https://stackoverflow.com/questions/47645845/set-max-execution-time-on-a-function


Robię http response status cody w martwych ciągach
edytowany 1x, ostatnio: ledi12
PI
  • Rejestracja:około 9 lat
  • Ostatnio:4 dni
  • Postów:113
0
Kopiuj

(async () => {
  //twoj kod
})();

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.