Avatar billede Majsen Juniormester
20. februar 2018 - 13:13 Der er 2 kommentarer og
1 løsning

async attribut

Hej.
Er det korrekt forstået, at async attributten i et script, gør at hvis man vil have browseren til at fortsætte sit arbejde, mens man lader sit script, hvis ens script står øverst på siden, altså hvis f.eks. dette:
<script type="text/javascript" src="Opgave.js" async></script>
stod øverst på html siden?
Hvis I har en uddybende forklaring på dette, er den velkommen!
Tak
Avatar billede Slater Ekspert
20. februar 2018 - 15:01 #1
Ja, async betyder at den loader filen sideløbende, og den bliver udført i det den bliver hentet - hvilket kan være når som helst. Du aner ikke om det er før resten af sidens elementer, efter dem eller et sted midt imellem. Derfor kan du f.eks. ikke have to script-filer der afhænger af hinanden, der begge benytter async, uden at have nogle event-handlers i det (f.eks. DOMContentLoaded) eller lignende.

Async er altså det mest effektive hastighedsmæssigt, men du kan hurtigt løbe ind i nogle problemer, hvis du har mere end én scriptfil, eller har script tags i HTML'en.

Alternativt er der "defer", som udskyder load af scriptet til resten af siden er loadet, men det er ikke asynkront, så du kan stadig regne med rækkefølgen. Har du f.eks. to scripts med defer på efter hinanden, vil det første altid blive loadet først, og så det næste. Derfor fjerner man nogle af de problemer, mod at det igen tager lidt længere at loade.
Avatar billede Majsen Juniormester
20. februar 2018 - 15:16 #2
Super! Tak! Hvad hvis jeg har 2 scriptfiler, men kun bruger async på den ene?
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"> </script>
    <script type="text/javascript" src="Opgave.js" async></script>
Sådan her? Vil det være et problem? Og hvorfor er async smart egentlig?
Avatar billede Slater Ekspert
20. februar 2018 - 16:33 #3
I det tilfælde er det ikke et problem, fordi du loader jQuery synkront, så det altid hentes med det samme før de næste linjer udføres, og så bagefter dit script der afhænger af det.

Havde du f.eks. gjort det omvendt, så jQuery blev loadet asynkront og dit eget script ikke gjorde, ville du få problemer. Så ville du ikke kunne benytte jQuery's funktioner i din egen kode uden en del ekstra besvær.

Det er smart simpelthen fordi det er det hurtigste. Du loader filen samtidig med andre filer, og den skal ikke vente på noget andet før den indlæses. Derfor bliver koden udført så hurtigt som overhovedet muligt, og bremser ikke andre filer i at indlæses. Grunden til at det ikke er standard, er at det som sagt kan give nogle problemer.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester