Dlaczego niektóre skrypty wykonują się poprawnie jedynie, gdy zostaną umieszczone w setTimeout()?

0

Dlaczego niektóre skrypty wykonują się poprawnie jedynie, gdy zostaną umieszczone w setTimeout()? I drugie pytanie kiedy powinno właściwie używać się setTimeouta()?

2

Podejrzewam, że chodzi o skrypty, które odwołują się do jakichś elementów strony, które nie zostały jeszcze załadowane.
W takim wypadku wskazane jest umieszczenie ich jako ostatnie pozycji na stronie, ew. wywołanie ich przez:

document.addEventListener('DOMContentLoaded', function(event) {
  // nasze skrypty
})

kiedy powinno właściwie używać się setTimeouta()?

Kiedy chcesz, żeby jakaś akcja wykonała się po upływie określonego czasu.

2

Dlaczego niektóre skrypty wykonują się poprawnie jedynie, gdy zostaną umieszczone w setTimeout()?

Bez kodu to mogę wywróżyć, że pewnie próbujesz użyć kodu asynchronicznego w nieprawidłowy sposób (edit: albo masz złą kolejność ładowania skryptów jak słusznie @Freja Draco wspomniała).

drugie pytanie kiedy powinno właściwie używać się setTimeouta()?

Tylko gdy chcesz coś celowo zrobić z opóźnieniem (animacje bez canvas gdzie animacje CSS nie wystarczą, jakieś debounce itp). Czasem jak musisz wspierać jakąś starą przeglądarkę to zerowy timeout przydaje się zamiast requestAnimationFrame i requestIdleCallback do dostrajania wydajności w szczególnych przypadkach. Jeśli używasz setTimeout w innych przypadkach to jest duża szansa, że robisz coś źle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1