జావాస్క్రిప్ట్లో, సైట్ యొక్క మొత్తం వినియోగదారు ఇంటర్ఫేస్ను మెరుగుపరచడానికి బహుళ విధానాలు ఉన్నాయి. ది 'వెబ్ వర్కర్' ప్రధాన థ్రెడ్ను బ్లాక్ చేయకుండా అమలు చేయడానికి అనుమతించే అటువంటి విధానం ఒకటి. ఇది దాని ప్రత్యేక జావాస్క్రిప్ట్ ఇంజిన్ ఉదాహరణను కలిగి ఉంటుంది మరియు అందువల్ల ప్రధాన థ్రెడ్ యొక్క కార్యాచరణలను అమలు చేయడం సాధ్యం కాదు.
ఈ వ్యాసం ఎలా ఉపయోగించాలో చర్చిస్తుంది 'వెబ్ వర్కర్' జావాస్క్రిప్ట్లో మల్టీథ్రెడింగ్ కోసం.
వెబ్ వర్కర్స్ అంటే ఏమిటి?
'వెబ్ వర్కర్లు' ప్రత్యేక/అంకిత థ్రెడ్లో టాస్క్లను సమాంతరంగా/అదే సమయంలో అమలు చేయడానికి జావాస్క్రిప్ట్ని ప్రారంభించే బ్రౌజర్ APIకి అనుగుణంగా ఉంటుంది.
వెబ్ వర్కర్ల అవసరం ఏమిటి?
JavaScript సింగిల్-థ్రెడ్ అయినందున, సంక్లిష్టమైన JavaScript కోడ్లు UI థ్రెడ్ను బ్లాక్ చేస్తాయి అంటే, రిఫ్రెష్ చేయడం, యూజర్ ఇన్పుట్ ఈవెంట్లను అమలు చేయడం మొదలైన వాటి కోసం అన్ని టాస్క్లను ఎదుర్కునే ప్రధాన విండోను ఆపివేస్తుంది. అటువంటి దృష్టాంతంలో, వినియోగదారు అనుభవం ప్రభావితమవుతుంది. . ఈ సమస్యను ఎదుర్కోవటానికి, ది 'వెబ్ వర్కర్' అమలులోకి వస్తుంది మరియు UI థ్రెడ్ను నిరోధించడాన్ని పరిష్కరిస్తుంది.
జావాస్క్రిప్ట్తో మల్టీథ్రెడింగ్ కోసం వెబ్ వర్కర్లను ఎలా ఉపయోగించాలి?
ఒక చేయడానికి 'వెబ్ వర్కర్' , వర్కర్ కన్స్ట్రక్టర్ని ఉపయోగించండి. ఇది URLని దాని వాదనగా తీసుకుంటుంది, ఇది కావలసిన కార్యాచరణను అమలు చేసే వర్కర్ స్క్రిప్ట్ ఫైల్ యొక్క మార్గానికి అనుగుణంగా ఉంటుంది. అయితే, ఒక HTML ఫైల్లో వర్కర్ కోడ్ని కలిగి ఉండటానికి, aని ఉపయోగించండి 'బొట్టు' వర్కర్ కోడ్ రాయడానికి.
సింటాక్స్ (వెబ్ వర్కర్ను సృష్టించడం)
స్థిరంగా x = కొత్త కార్మికుడు ( 'worker.js' ) ;సింటాక్స్ (కార్మికుడికి సందేశం పంపడం)
స్థిరంగా x = కొత్త కార్మికుడు ( 'worker.js' ) ;
సింటాక్స్ (కార్మికుడి నుండి సందేశాన్ని స్వీకరించడం)
x. సందేశం = ఫంక్షన్ ( సంఘటన ) {కన్సోల్. లాగ్ ( సంఘటన. సమాచారం ) ;
} ;
ఉదాహరణ: జావాస్క్రిప్ట్లో ఒక సంఖ్య యొక్క ఫ్యాక్టోరియల్ని గణించడానికి 'వెబ్ వర్కర్'ని ఉపయోగించడం
కింది ఉదాహరణ ఉపయోగిస్తుంది 'వర్కర్()' కన్స్ట్రక్టర్ వెబ్ వర్కర్ని సృష్టించడానికి మరియు సంఖ్య యొక్క కారకాన్ని గణించడానికి:
< html >
< తల >
< h2 శైలి = 'టెక్స్ట్-అలైన్: సెంటర్;' > వెబ్ వర్కర్స్ ఉదాహరణ h2 >
తల >
< శరీరం >
< స్క్రిప్ట్ >
స్థిరంగా x = కొత్త కార్మికుడు ( URL. createObjectURL ( కొత్త బొట్టు ( [
`
// వర్కర్ స్క్రిప్ట్
స్థిరంగా వాస్తవం = ( n ) => {
ఉంటే ( n == 0 || n == 1 ) {
తిరిగి 1n ;
}
లేకపోతే {
తిరిగి బిగ్ఇంట్ ( n ) * వాస్తవం ( బిగ్ఇంట్ ( n ) - 1n ) ;
}
} ;
స్వీయ. సందేశం = ( సంఘటన ) => {
స్థిరంగా తో = వాస్తవం ( సంఘటన. సమాచారం ) ;
స్వీయ. పోస్ట్ మెసేజ్ ( తో. స్ట్రింగ్ ( ) ) ;
} ; `
] , { రకం : 'టెక్స్ట్/జావాస్క్రిప్ట్' } ) ) ) ;
x. పోస్ట్ మెసేజ్ ( 15n ) ;
x. సందేశం = ( సంఘటన ) => {
స్థిరంగా బయటకు = సంఘటన. సమాచారం ;
కన్సోల్. లాగ్ ( 'వెబ్ వర్కర్ ద్వారా 15 యొక్క ఫ్యాక్టోరియల్->' , బయటకు ) ;
} ;
శరీరం >
html >
ఈ కోడ్లో, ఈ క్రింది దశలను వర్తించండి:
- ముందుగా, పేర్కొన్న శీర్షికను పేర్కొనండి.
- ఆ తరువాత, సృష్టించు a 'వెబ్ వర్కర్' ఆబ్జెక్ట్ వర్కర్ కోసం కోడ్ను కలిగి ఉన్న బొట్టు వస్తువు యొక్క URLని కలిగి ఉంటుంది.
- వర్కర్కు అంకితం చేయబడిన కోడ్ ఒక అనామక ఫంక్షన్లో చేర్చబడింది, ఇది రికర్సివ్ ఫంక్షన్ ద్వారా సంఖ్య యొక్క కారకాన్ని గణిస్తుంది.
- అలాగే, ప్రధాన థ్రెడ్ ద్వారా పంపిన సందేశాలను కార్మికుడు వింటాడు 'self.onmessage' ఈవెంట్, పాస్ చేసిన సంఖ్య యొక్క కారకాన్ని తిరిగి పొందుతుంది మరియు దీని ద్వారా ప్రధాన థ్రెడ్కు ఫలితాన్ని ఇస్తుంది “పోస్ట్ మెసేజ్()” పద్ధతి.
- ప్రధాన థ్రెడ్లో, వర్కర్ ఇన్స్టాన్స్ని సృష్టించండి మరియు దానికి '' అనే నంబర్తో సందేశాన్ని పంపండి. 15n ”. ఇక్కడ, ' n ” అనేది “BigInt” విలువను సూచిస్తుంది.
- కార్మికుడు కారకాన్ని కంప్యూటింగ్ చేయడం పూర్తి చేసిన తర్వాత, అది ఫలితాన్ని/ఫలితాన్ని ప్రధాన థ్రెడ్కు తిరిగి పంపుతుంది “పోస్ట్ మెసేజ్()” పద్ధతి.
- చివరగా, ప్రధాన థ్రెడ్ ఫలితాన్ని పొందుతుంది/అందుకుంటుంది 'సందేశం' ఈవెంట్ మరియు కన్సోల్లోని సంఖ్య యొక్క సంబంధిత కారకాన్ని అందిస్తుంది.
అవుట్పుట్
వెబ్ వర్కర్స్ యొక్క ప్రయోజనాలు
సమాంతర ప్రాసెసింగ్ : అదే కోడ్ను సమాంతర పద్ధతిలో అమలు చేసే సందర్భంలో.
కోడ్ అమలులో అంతరాయం లేదు: ప్రస్తుత పేజీలో రిఫ్రెష్లు మొదలైన వాటితో సంబంధం లేకుండా కోడ్ అమలు చేయబడుతుంది.
కదలిక ట్రాకింగ్: మోషన్ డిటెక్షన్ అంతా బ్యాక్గ్రౌండ్ వర్కర్లో జరుగుతుంది.
ప్రారంభించబడిన మల్టీథ్రెడింగ్: ఇవి జావాస్క్రిప్ట్లో మల్టీథ్రెడింగ్ని ప్రారంభిస్తాయి.
మెరుగైన పనితీరు: ప్రత్యేక థ్రెడ్లలో ఇంటెన్సివ్/చాలెంజింగ్ టాస్క్లను చేయడం ద్వారా పనితీరును ఆప్టిమైజ్ చేయండి.
ప్రభావవంతమైన వినియోగదారు అనుభవం: ఇవి ప్రధాన థ్రెడ్ను నిరోధించడాన్ని నివారిస్తాయి, ఫలితంగా ప్రతిస్పందించే వినియోగదారు అనుభవం లభిస్తుంది.
వెబ్ వర్కర్ల పరిమితులు
అయితే, వెబ్ కార్మికులకు కొన్ని పరిమితులు కూడా ఉన్నాయి. ఇవి క్రింది విధంగా పేర్కొనబడ్డాయి:
- జ్ఞాపకశక్తిని ఎక్కువగా ఉపయోగించడం.
- వర్కర్ థ్రెడ్లో DOMని అప్డేట్ చేయడం లేదా విండో ఆబ్జెక్ట్ని ఇన్వోక్ చేయడం సాధ్యపడదు.
ముగింపు
'వెబ్ వర్కర్స్' ప్రత్యేక/అంకిత థ్రెడ్లో ఒకే సమయంలో టాస్క్లను అమలు చేయడానికి JavaScriptను ప్రారంభించే బ్రౌజర్ APIకి అనుగుణంగా ఉంటుంది. వర్కర్ స్క్రిప్ట్ ఫైల్ యొక్క పాత్కు అనుగుణంగా ఉండే ఆర్గ్యుమెంట్గా URLని తీసుకోవడం ద్వారా వీటిని ఉపయోగించవచ్చు. ఈ బ్లాగ్ జావాస్క్రిప్ట్లో మల్టీథ్రెడింగ్ కోసం “వెబ్ వర్కర్స్” వినియోగాన్ని చర్చించింది.