“De Rode Draad”

0
7

JavaScript is wat ze noemen “single-threaded.” Als Brian Barbour zegt:

Dit betekent dat het een call-stack en een heap-geheugen.

We voelen ons allemaal een symptoom van dat regelmatig in de vorm van prestatie-jank-en non-interactiviteit op elementen of complete sites. Als we geven JavaScript veel van de banen en het wordt echt bezig met het doen van hen, dan is het niet doen van andere dingen, zoals bijvoorbeeld de omgang met onze event-handlers snel.

Er is een interessant punt/counter-point combo onlangs langs deze lijnen.

Das Surma heeft ingezet voor het verplaatsen van zo veel JavaScript uit de main thread als u eventueel kunt. In feite, als het gaat om het gebruik van Web Workers, hij stelt voor:

Je moet altijd gebruik maken van Web Workers.

Web Workers is de primaire manier om JavaScript uit de main thread.

Er is veel te overwegen, natuurlijk, maar ik hou van hoe hij vergelijkt deze met hoe andere talen bel de rode draad van de “UI-thread.” Als wat je doet is UI-gerelateerde, doe het op de main thread; als dat niet zo is, doe het uit de main thread. Een voorbeeld? State management.

David Gilbertson moet lees dat en schreef:

Ik zag een artikel dat recent het maken van de case dat het bijwerken van een Redux-store is een goede kandidaat voor het Web Workers, want het is niet UI het werk (en niet-UI werkt niet op de main thread). Opspannen van de verwerking van gegevens over een werknemer met draad klinkt verstandig, maar het idee leek mij een beetje, umm, academisch.

David ‘ s belangrijkste punt, lijkt me, is dat sommige van de forse JavaScript dingen die we moeten doen in reactie op de door de gebruiker geïnitieerde acties waar de gebruiker dient te wachten voor de dingen om toch af, dus een niet-reagerende UI gedurende die tijd is OK. Maar voor iets dat niet door de gebruiker geïnitieerde — en duurt langer dan zeggen 100ms — stemt hij ermee in een Web Worker is behulpzaam.

(Op 100ms ding, het is de moeite waard op te merken dat een belangrijk punt, Das Surma maakt is dat de wereld vol is van low-end telefoons — en wie weet wat 100ms op een high-end telefoon is toen vertaald naar een low-end telefoon.)