рдХреНрд░реЙрд╕ рд╡реЗрдмрд╡рд░реНрдХрд░ рдФрд░ XMLHttpRequest

WebWorker + XMLHttpRequest

рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдЕрдм рдХрд┐рд╕реА рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдиреНрдпреВрдмрд╛рдп рдореЗрдВ рдХрдИ рд╕рд╡рд╛рд▓ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдзрд╛рдЧреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ, рдЕрд░реНрдерд╛рддреН WebWorkerред рд╢реЗрд╖ рдХрд╣рд╛рдиреА рдХреЛ рдЬреЗрдПрд╕ рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдореИрдВ рдПрдЪрдЯреАрдПрдордПрд▓ рдФрд░ рдЬреЗрдПрд╕ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдирд╣реАрдВ рдЪрдмрд╛рдКрдВрдЧрд╛ред
рдЖрдЬ рд╣рдо WebWorker рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд XMLHttpRequest рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджреЗрдЦреЗрдВрдЧреЗред
рдкрд╣рд▓рд╛ рдХрджрдо, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдп рдмрдирд╛рдирд╛ рд╣реИред
function req0() {} 

рдЕрдм рдЖрдкрдХреЛ рдПрдХ рдХрд░реНрдордЪрд╛рд░реА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 Th0=new Worker('Th0.js') 

WebWorker рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓ 3 рдХрдорд╛рдВрдбреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛: рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдирд╛, рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рд╣рдЯрд╛рдирд╛ред
рдореБрдЦреНрдп рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП:
onmessage - рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдпрд╛, рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдмреЛрд▓рдирд╛, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╡реЗрдмрд╡рд░реНрдХ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдЧреАред
рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ - рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдпрд╛ рдХрд┐рд╕реА рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ред рдпрд╣рд╛рдВ рдЖрдк рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдорд╛рдкреНрддрд┐ - рдХрд░реНрдордЪрд╛рд░реА рдХреА рдкреВрд░реНрдгрддрд╛ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рд▓рд┐рдП:
onmessage - рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдпрд╣ рддрдм рд╣реИ рдЬрдм рд╡рд░реНрдХрд░ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдХрд░реЗрдЧрд╛
рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ рд╡рд╣ рд╣реИ рдЬреЛ рдХрд░реНрдордЪрд╛рд░реА рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдо
рдЕрдм рдЖрдкрдХреЛ Th0.js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕рдореЗрдВ рд╡рд░реНрдХрд░ рдХрд╛ рдореБрдЦреНрдп рдХреЛрдб рд╣реЛрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ WebWorker рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред WebWorker рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
Th0.js рдЦреЛрд▓реЗрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ:
 onmessage=function(event) { nameRQ=event.data;} 

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдЧрд╛ред рдЪрд░ nameRQ рдХреЛ рдХреНрд╡реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдЕрдм рдЖрдкрдХреЛ XMLHttpRequest рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХреИрд╕реЗ? рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ XMLHttpRequest рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдореИрдВ рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдПрдХ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдПрдБ:
 xhttp=new XMLHttpRequest() 

рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЖрдк рддреНрд░реБрдЯрд┐ рдкрд╣рдЪрд╛рдирдиреЗ рдФрд░ рдЙрди рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред
  xhttp.onreadystatechange=function(){if (xhttp.readyState==4&&xhttp.status==200) {postMessage({goodReq0:xhttp.responseText})}}; 

if (xhttp.readyState == 4 && xhttp.status == 200) - рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИрдВрдбрд▓рд░ред рдпрджрд┐ рдЕрдиреБрд░реЛрдз рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
{рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ ({goodReq0: xhttp.responseText})}}};

рдЕрдм рдЖрдкрдХреЛ рдЕрдиреБрд░реЛрдз рд╕реНрд╡рдпрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 xhttp.open('POST','http://domen.dmn/req/'+nameRQ,true); xhttp.send(); 

рдЕрдиреБрд░реЛрдз POST, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реЛрдЧрд╛ред
domeninosn / req '+ nameRQ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╕рд░реНрд╡рд░ рдкрд░ рд░реАрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧреА - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд╛рдо рдЪрд░ рдирд╛рдорд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдпрд╣ рдЪрд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП рд╡рд┐рднрд┐рдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рдХреЛрдб Th0.js
 onmessage=function(event) { nameRQ=event.data; /*    */ xhttp=new XMLHttpRequest(); /*  XMLHttpRequest- */ xhttp.onreadystatechange=function(){if (xhttp.readyState==4&&xhttp.status==200) {postMessage({goodReq0:xhttp.responseText})}}; /*   */ xhttp.open('POST','http://domen.dmn/req/'+nameRQ,true); /*   */ xhttp.send(); /*   */ } 

рд╣рдо рдореБрдЦреНрдп рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рдХрд░реНрдордЪрд╛рд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
 Th0.onmessage=function(event) {document.getElementById('DivRQ').innerHTML=event.data.goodReq0;} 

document.getElementById ('DivRQ')ред рднреАрддрд░ HTML - рдкреНрд░рд╛рдкреНрдд рдкрд╛рда рдХреЛ DivRQ (рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдкреГрд╖реНрда рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП) рдирд╛рдордХ рдПрдХ div рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред
event.data.goodReq0 - рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ред
рдХрд░реНрдордЪрд╛рд░реА рдХреЛ "рдорд╛рд░рдирд╛":
 Th0.terminate(); 

рдЕрдм, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдПрдХ рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдХреЛрдб рдореЗрдВ, onmessage рдкрд╣рд▓реЗ рдЖрддрд╛ рд╣реИ, рдлрд┐рд░ рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ ..
 Th0.postMessage(nameRQ)} 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреЛрд╕реНрдЯрдореИрд╕реЗрдЬ рдореЗрдВ рд╣рдо рдЕрдиреБрд░реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд╕рд░реНрд╡рд░ рд╕реЗ рдкрдврд╝реА рдЬрд╛рдПрдЧреАред

рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓:
 function req0() { Th0=new Worker('Th0.js'); /*   */ Th0.onmessage=function(event) {document.getElementById('DivRQ').innerHTML=event.data.goodReq0; /*  */ Th0.terminate();} /*  WebWorker */ Th0.postMessage(nameRQ)} /*  WebWorker */ 

рддреЛ рд╣рдорд╛рд░рд╛ "рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдиреБрд░реЛрдз" рддреИрдпрд╛рд░ рд╣реИред рдЕрдм рд╡реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In218989/


All Articles