рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореБрдЦреНрдп рд▓реВрдк



рд╣рдо рд╕рднреА рдиреЗ рдЕрдЬрд╛рдХреНрд╕ рдФрд░ рдиреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рди рдХреЗрд╡рд▓ рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ, рдмрд▓реНрдХрд┐ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓рдХрд┐рдЯ рдореЗрдВ рднреА рдЦреБрдж рдХреЛ рдордЬрдмреВрддреА рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЕрдЬрд╛рдХреНрд╕ - рд╕рд░реНрд╡рд░ рд╕реЗ рдкреЗрдЬ, рдиреЛрдб рддрдХ рдбреЗрдЯрд╛ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЦреАрдВрдЪ - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ IO рдХреЗ рд╕рд╛рде рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ред рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реА рдПрдХрд▓-рд╕реВрддреНрд░ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдПрдХ рд╣реА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ?

рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╣реА рд╢реАрд░реНрд╖рдХ рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВ, рд╣рдо рдореБрдЦреНрдп рд▓реВрдк ("рдореБрдЦреНрдп рд▓реВрдк") рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░


рдЪрд▓реЛ рд╢реБрд░реВ рд╕реЗред рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ", рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ "рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ", рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ "рдИрдПрд╕", рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ "рдЬреЗрдПрд╕" (рдЬрдм рддрдХ, рдмреЗрд╢рдХ, рдЖрдк рдореЛрдЬрд╝рд┐рд▓рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдмреНрд░реЗрдВрдбрди рдЖрдЗрдЪ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред ECMAScript рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ред

рд╣рдо ECMA-262 рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ ... рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдХреИрд╕реЗ рд░реЛрдХрдирд╛ рд╣реИ рдпрд╛ рдХреИрд╕реЗ рд░реЛрдХрдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбрдмреНрд▓реНрдпреВрдПрд╕рдПрдЪ рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрд╕реНрдЯ, рдЙрд░реНрдл тАЛтАЛрдбрдмреНрд▓реНрдпреВрдПрд╕рдПрдЪ рд╣реИред рдореИрдВрдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ 100% рд▓реЛрдб рдХрд┐рдпрд╛, рдЗрд╕реЗ рдЕрдВрдд рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛, рдорд░ рдЧрдпрд╛ - рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ рдЕрдЪреНрдЫреА рдкреБрд░рд╛рдиреА sleep() , рдЬреЛ n рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рд░реЛрдХрддреА рд╣реИред

 WScript.echo(new Date() + ': Hello world!'); WScript.sleep(1000); WScript.echo(new Date() + ': Goodbye, cruel world!'); 

рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдХрдард┐рди рдХрд╛рд░реНрдп рдПрдХ рдмрд╛рдзрд╛ рдХреЛрд░реНрд╕ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЫрдд рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг: рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХреАрдмреЛрд░реНрдб рдХреЗ рдмрд┐рдирд╛, рд╡рд┐рдВрдбреЛрдЬ 98 рдкрд░ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ 6 рдХреЗ рд╕рд╛рде, рдЬреЛ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдореЗрдВ рдкреБрд╕реНрддрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпреБрд╡рд╛ рдЧреБрдВрдбреЛрдВ рдХреЛ IE6 рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд▓реЛрднрди рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпрди рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛ред рдХреИрд╕реЗ рд╣реЛ?

рд╣рдо IE рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдПрдХ рдкреЗрдЪреАрджрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╡реИрд╢реНрд╡рд┐рдХ osprey рдореЗрдВ рдПрдХ рдХреЙрд▓рдмреИрдХ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВред

 function startIE () { var ie = WScript.CreateObject("InternetExplorer.Application", "ieEvent_"); ie.Navigate("http://127.0.0.1/"); ie.Visible = true; ie.FullScreen = true; } var ieEvent_OnQuit = startIE; startIE(); 

рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, IE рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреБрднрд╛рд╖рд┐рдпрд╛ рдЕрдВрдд рддрдХ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЪреБрдкрдЪрд╛рдк рдорд░ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЙрд╕реЗ рдЕрдирдиреНрдд рдиреАрдВрдж рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорд╛рдереЗ рдкрд░, sleep(Infinity) рдбрдмреНрд▓реНрдпреВрдПрд╕рдПрдЪ рдкрддрд╛ рдирд╣реАрдВ рдХреИрд╕реЗ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо 60 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдкрд░реНрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдирд┐рдХрд▓рддрд╛ рд╣реИ:

 function startIE () { var ie = WScript.CreateObject("InternetExplorer.Application", "ieEvent_"); ie.Navigate("http://127.0.0.1/"); ie.Visible = true; ie.FullScreen = true; } var ieEvent_OnQuit = startIE; startIE(); while (true){ WScript.sleep(60000); } 

рдЕрдм рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпрди рдЦреБрд╢ рд╣реИрдВред рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рднреА рдмреЗрд╣рддрд░ - IE рддреБрд░рдВрдд рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ 0 рд╕реЗ 59 рд╕реЗрдХрдВрдб рдХреЗ рд╕рдордп рдХреА рдордирдорд╛рдиреА рд░рд╛рд╢рд┐ рдХреЗ рдмрд╛рдж рдирд╣реАрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ "рдШрдЯрдирд╛" OnQuit рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреА рдиреАрдВрдж рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЕрдЧрд░ sleep рдХрдЯреМрддреА рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡реНрдпрд╕реНрдд рд▓реВрдк рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЕрдиреНрд╡реЗрд╖рдХ рднреА рдСрдирдХреНрдпреВрдЗрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЦреИрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрджрд┐рдо рдореБрдЦреНрдп рд▓реВрдк рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


"рдкреВрд░рд╛ рдФрд░ рдорд░ рдЧрдпрд╛" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдЕрдкрдиреЗ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ - рдЬрдм рдЖрдк рдХрд╣реАрдВ рднреА рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХрд╖реНрдЯрдкреНрд░рдж рдкреЙрдк-рдЕрдк рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП? рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП (рдФрд░ рдиреЛрдб рдореЗрдВ) рдореБрдЦреНрдп рд▓реВрдк рд╡рд╛рдпрд░реНрдб рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдЗрддрдирд╛ рдЧрд╣рд░рд╛ рд╣реИ рдХрд┐ рд▓реВрдкрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде, рдХрднреА-рдХрднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдЕрд╕рдВрднрд╡ рд╣реИред

рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рд░рд▓ рд╣реИ: рдПрдХ рдХрддрд╛рд░ рд╣реИ, рдФрд░ рдХреЛрдИ рднреА рдХреЛрдб рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд╡рд╣ рдЗрд╕рдореЗрдВ рдмрди рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХрддрд╛рд░ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рддреЛ рджреБрднрд╛рд╖рд┐рдпрд╛ рдЗрд╕рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рддрддреНрд╡ рдХрд╛рдЯрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдпрд╣ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред

рдХрддрд╛рд░ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ "рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ" рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рдкреГрд╖реНрда рдкрд░ рдПрдореНрдмреЗрдбреЗрдб рдФрд░ рд▓рд┐рдВрдХреНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрд╡реЗрдВрдЯ ( onclick , onmouseover , ...), рдЯрд╛рдЗрдорд░ рдХреЙрд▓рдмреИрдХ ( xhr.onreadystatechange ) рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдСрдмреНрдЬреЗрдХреНрдЯ ( xhr.onreadystatechange )ред рдПрдХ рддрд░рд╣ рд╕реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдЖрдзрд╛рд░рд┐рдд рдЬреЗрдПрд╕ рдореЗрдВ рдЯрд╛рдЗрдорд░ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред

рдЦреИрд░, рдЕрдм рдХреНрд░рдо рдореЗрдВред

рдЪреЗрддрд╛рд╡рдиреА

рддреАрди рдХрд╛рд░реНрдп: alert , prompt рдФрд░ confirm - рд╕рдВрдкреВрд░реНрдг рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдЖрдзрд╛рд░рд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрд▓рдЧ рдЦрдбрд╝реЗ рд╣реЛрдВред рд╢рд╛рдпрдж, рдореЗрд░реА рддрд░рд╣, рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкрд░рд┐рдЪрд┐рдд рдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдмрдВрдж рд╣реЛрдиреЗ рддрдХ рд╕реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдореБрдЦреНрдп рд▓реВрдк рдХреЛ рд░реЛрдХрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ (рдбрд┐рдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛)ред

рдкрд╣рд▓реЗ, рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ, рдХреБрдЫ рдкреГрд╖реНрдарднреВрдорд┐ рдЯреИрдм рдореЗрдВ рдПрдХ alert рдкреВрд░реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рд╕рдХрддреА рдереА, рдФрд░ Google Chrome рдЕрднреА рднреА рдЗрд╕рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдзреБрдирд┐рдХ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

setTimeout, setInterval

рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдЖрдзрд╛рд░рд┐рдд рдЬреЗрдПрд╕ рдореЗрдВ рдХреЛрдИ sleep рд╕рдорд╛рд░реЛрд╣ рдирд╣реАрдВ рд╣реИ - рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрднреА рднреА рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ ( alert рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рд▓реЗрдХрд┐рди рдЖрдк setTimeout рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ "рдкреВрд░реА рддрд░рд╣ рд╕реЗ" рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджреЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╕рд░рд▓ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИ: setTimeout(fn, timeout) ред fn рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ timeout рдмрд╛рдж рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд╣рд▓реЗ рд╣реА рдХреНрдпреЛрдВ рдирд╣реАрдВ , рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ? рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

setTimeout рдХреЙрд▓ рдПрдХ рдирдП рдЯрд╛рдЗрдорд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ (рд╡реИрд╕реЗ, рдЗрд╕рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЬрдм рдЗрд╕рдХрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рджреБрднрд╛рд╖рд┐рдпрд╛ рдЗрд╕ рд╕рдордп рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди fn рддреБрд░рдВрдд рдмреБрд▓рд╛рдпрд╛ fn , рдпрд╣ рдПрдХ рддреБрдЪреНрдЫ рдорд╛рдорд▓рд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдЙрд╕ рд╕рдордп рднреА рдХрддрд╛рд░ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЪрдмрд╛ рд░рд╣рд╛ рд╣реЛрдЧрд╛, рддреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХрддрд╛рд░ рдХреЗ рдЦрд╛рд▓реА рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреЙрд▓рдмреИрдХ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде "рдЕрднреА" рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рд╣реИ! рдлрд┐рд░, рдЬрдм рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реЛрддреА рд╣реИ, рддреЛ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕рднреА рдЯрд╛рдЗрдорд░ рдФрд░ рдЪреЗрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВред рд╕рднреА рдмреАрддреА рд╣реБрдИ рд╕рдордпрд╛рд╡рдзрд┐ рдореЗрдВ рд╕реЗ, рдЬреЛ рдХрдо рд╕рдордп рдкрд░ рд╕реЗрдЯ рдХреА рдЧрдИ рдереА, рд╡рд╣ рдЪрдпрдирд┐рдд рд╣реИ рдФрд░ рдпрджрд┐ рдХрдИ рд╣реИрдВ, рддреЛ рд╡рд╣ рдЬреЛ рд╕рднреА рдХреЗ рдЪреБрдиреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рдЗрд╕ рддрд░рд╣ рдХреЗ "рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕рдорд╛рдкреНрдд" рдЯрд╛рдЗрдорд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдХрд╛ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ - рд╡реЙрдЗрд▓рд╛ - рджреБрднрд╛рд╖рд┐рдпрд╛ рдлрд┐рд░ рд╕реЗ рдХреБрдЫ рдХрд░рдирд╛ рд╣реИ - рдЧреИрд░-рдЦрд╛рд▓реА рдХрддрд╛рд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ред

setTimeout рдЯрд╛рдЗрдорд░ рдХреЗ setTimeout рдЖрдЙрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, setTimeout рджреЛ рдмрд╛рд░ рдлрд╛рдпрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЦреИрд░, рдФрд░ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб:

 console.log('script started'); setTimeout(function(){ console.log('timed out function'); }, 5); var endDate = +new Date() + 10; while (+new Date() < endDate){ // busy loop for 10 ms } console.log('script finished'); 

рдХрдВрд╕реЛрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛:
  рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реБрд░реВ рд╣реБрдИ
 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦрддреНрдо рд╣реЛ рдЧрдИ
 рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд 

рдЙрд╕ рдХреНрд░рдо рдореЗрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЯрд╛рдЗрдорд░ 5 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рдерд╛, рдЙрд╕ рд╕рдордп рдЗрдВрдЬрди рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рддрд╛рд░реАрдЦ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд╕реБрдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдХреЛ рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рд▓рдВрдмрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдПрдХ рдФрд░ 5 рдорд┐рд▓реА рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдпрд╣рд╛рдБред рдпрд╣ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЖрдк clearTimeout(timeoutId) рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕рдордп рдЯрд╛рдЗрдорд░ рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЯрд╛рдЗрдорд░ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЧреЛрд▓реА рдорд╛рд░ рджреА рд╣реИ, рддреЛ рдЗрд╕реЗ рд░рджреНрдж рдХрд░реЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реНрдпрд░реНрде рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯрд╛рдЗрдорд░ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ?

 var timeoutId; setTimeout(function(){ console.log('timed out function'); clearTimeout(timeoutId); }, 5); timeoutId = setTimeout(function(){ console.log('timed out function 2'); }, 5); var endDate = +new Date() + 10; while (+new Date() < endDate){ // busy loop for 10 ms } 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреАред рджреЛрдиреЛрдВ рдЯрд╛рдЗрдорд░ 5 рдПрдордПрд╕ рдкрд░ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рджреЛрдиреЛрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рдереЗ, while рдЗрд╕рдХреА рд╕рдВрд╡реЗрджрдирд╣реАрди рдФрд░ рдирд┐рд░реНрджрдпреА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рдереАред рд▓реЗрдХрд┐рди рдкрд╣рд▓рд╛ рдЯрд╛рдЗрдорд░ "рд╢реВрдЯ" рдкрд╣рд▓реЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рджреЛрдиреЛрдВ рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП рджреЗрд░реА рдХреЗ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рдереАред рдФрд░ рдпрд╣ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЪреБрдХреЗ рджреВрд╕рд░реЗ рдЯрд╛рдЗрдорд░ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рд╢реВрдЯрд┐рдВрдЧ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред

setInterval рдЗрд╕рдореЗрдВ setInterval рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрди рдЯрд╛рдЗрдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕рдХреЗ рдЯрд╛рдЗрдорд░ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдЗрд╕рдХреЗ рдореВрд▓ рдореВрд▓реНрдп рдкрд░ рд░реАрд╕реЗрдЯ рд╣реИред рдЗрд╕ рддрд░рд╣ рдЖрдк setTimeout рдЕрдВрджрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдХреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЯрд╛рдЗрдорд░ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдкрд░ setInterval рдЯрд╛рдЗрдорд░ рдХрд╛рдЙрдВрдЯрд░ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЬрдм рдореБрдЦреНрдп рд▓реВрдк рдХрддрд╛рд░ рдЦрд╛рд▓реА рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рд╕рдордп рдХреЗ рд╕рд╛рде "рдлрд┐рд╕рд▓" рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рдорд╛рдг
 setInterval(function(){ console.log(+new Date()); }, 1000); setTimeout(function(){ var endDate = +new Date() + 2000; while (+new Date() < endDate){ // busy loop for 2000 ms } }, 1500); 

рдмрд╛рдХреА рд╡рд╣реА рд╣реИред рдХреЗрд╡рд▓ рдЕрдВрддрд░рд╛рд▓ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, clearInterval ред

рдареАрдХ рд╣реИ, рдЕрдВрдд рдореЗрдВ, рдЕрдЧрд░ setTimeout рдпрд╛ setInterval рдХреЛ 4 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реЗ рдХрдо рд╕рдордп рдХрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ 4 рдПрдордПрд╕ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп рдерд╛ред рд▓реЗрдХрд┐рди, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдмреЗрд╣рддрд░ рдХреЗ рд▓рд┐рдП рд╣реИ - 0 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрд╛ рдПрдХ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЕрдВрддрд░рд╛рд▓ рдЬрд▓реНрджреА рдФрд░ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдореБрдЦреНрдп рд▓реВрдк рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджреЗрдЧрд╛ред рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢реВрдиреНрдп рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, setImmediate рдЙрдкрдпреЛрдЧ setImmediate ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрднреА рддрдХ "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░" рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд┐рд▓ рд╣реИрдВред

<Script>

рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореБрдЦреНрдп рд▓реВрдк рдХрддрд╛рд░ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдПрдХ рдУрд░, рдпрд╣ async рдФрд░ defer рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдФрд░ рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдкреГрд╖реНрда рдореЗрдВ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдПрдореНрдмреЗрдбреЗрдб рд╣реИрдВ, рдФрд░ рдкрд╣рд▓реЗ рдПрдХ 4 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ 10 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЙрд▓рдмреИрдХ рдХрдм рдХрд╛рдо рдХрд░реЗрдЧрд╛ - рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╛ рдЙрд╕рдХреЗ рдмрд╛рдж?

рдХреЛрдб
 <!DOCTYPE html> <script> console.log('script 1'); setTimeout(function(){ console.log('setTimeout from script 1'); }, 5); var endDate = +new Date() + 10; while (+new Date() < endDate){ // busy loop for 10 ms } console.log('script 1 finished'); </script> <script> console.log('script 2'); </script> 

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕, рдХреНрд░реЛрдо, рдФрд░ IE10 рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реЛрдЧрд╛ред рдУрдкреЗрд░рд╛ - рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрд╣рд▓реЗред

рдФрд░ рдЕрдЧрд░ рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдореНрдмреЗрдбреЗрдб рдирд╣реАрдВ рд╣реИ, рдЗрдирд▓рд╛рдЗрди, рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░реА?

рдХреЛрдб
 <!DOCTYPE html> <script> console.log('script 1'); setTimeout(function(){ console.log('setTimeout from script 1'); }, 5); var endDate = +new Date() + 10; while (+new Date() < endDate){ // busy loop for 10 ms } console.log('script 1 finished'); </script> <script src="http://127.0.0.1/script.js"></script> 

рдФрд░ рдпрд╣рд╛рдВ рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрд╕ рдЬреНрдЮрд╛рди рд╕реЗ, рдЕрдХрд╛рджрдорд┐рдХ рдорд╣рддреНрд╡ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ? рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдХреНрд╕рд░ рдХрдИ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЪрд┐рдкрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдкрд░рд┐рдгрд╛рдореА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореВрд▓ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИред

рдШрдЯрдирд╛рдУрдВ

рдпрд╣ рдЕрд▓рдЧ рд╕реЗ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдЗрд╡реЗрдВрдЯреНрд╕ рдФрд░ DOM рдЪреЗрдВрдЬ рдЗрд╡реЗрдВрдЯреНрд╕ ( onDOMNodeInsertedIntoDocument рдФрд░ onDOMNodeInsertedIntoDocument ) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдЬрдм рдХреЛрдИ DOM рдЯреНрд░реА рдмрджрд▓рддрд╛ рд╣реИ рддреЛ рдореБрдЦреНрдп рд▓реВрдк рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╡реЗ рдкреЗрдбрд╝ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

 var i = 0; document.body.addEventListener('DOMSubtreeModified', function(e){ i = 42; }, false); console.log('i = ' + i); // i = 0; document.body.appendChild(document.createElement('div')) console.log('i = ' + i); // i = 42; 

рдРрд╕реЗ рд╕рд╣рдЬ рдореЗрдВ рднрд╛рдЧрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдПрдХ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореБрд╢реНрдХрд┐рд▓ jQuery рдкреНрд▓рдЧрдЗрди рдкрдВрдЦреЛрдВ рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ MutationEvent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдУрд╕реНрдкреНрд░реЗ рдореЗрдВ рдмрд╣ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЛрдо рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ (рдкрджрд╛рд╡рдирдд) рдФрд░ рдкреЗрдбрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

рдЖрдЗрдП рд╣рдо рдорд╛рдЙрд╕-рдХреАрдмреЛрд░реНрдб-рдЯреИрдЪреЗрд╡рд┐рдо рдХреА рдШрдЯрдирд╛рдУрдВ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдореЗрдВ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, mousedown рдИрд╡реЗрдВрдЯ рдкрд░ рдПрдХ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдПрдХ рдЙрджрд╛рд╕ рджреГрд╢реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдФрд░ click рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП - рдкрддреЗ рдкрд░ рдЬрд╛рдПрдВред рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╣рд▓реЗ рддрд░реНрдХ preventDefault preventDefault рд╡рд┐рдзрд┐ preventDefault рдХреЙрд▓ рдХрд░рдХреЗ рдкреВрд░реНрд╡рд╡рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рджреЛ рдЪреАрдЬреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ рд╣реИрдВрдбрд▓рд░, рдлрд┐рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХреНрд╢рди, рдФрд░ рдмрдЯрди рддрдм рддрдХ "рдХреНрд▓рд┐рдХ" рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВрдбрд▓рд░ рдкрд╛рд╕ рди рд╣реЛ рдЬрд╛рдПред рджреВрд╕рд░рд╛, рд╣реИрдВрдбрд▓рд░ рддрдм рддрдХ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдореБрдЦреНрдп рд▓реВрдк рдореЗрдВ рдЙрд╕рдХреА рдмрд╛рд░реА рдирд╣реАрдВ рдЖрддреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдХреА рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЧрдгрдирд╛рдУрдВ рдкрд░ рдмрд╣реБрдд рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬрд╡рд╛рдмрджреЗрд╣реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд╛рдлреА рдзреАрдорд╛ рдФрд░ рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдРрд╕реА рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╣реИрдВрдбрд▓рд░ рд▓рдЯрдХрд╛ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ onclick рд╕рд╛рде рдмрдЯрди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдУрдкреЗрд░рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реИрдВрдбрд▓рд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рджреГрд╢реНрдп рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдмреНрд░реЗрдХ рдХреЛ рдереЛрдбрд╝рд╛ рдЪрд┐рдХрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреГрд╖реНрда рдЖрд╕рдиреНрди рдЯреИрдм рдореЗрдВ рдПрдХ рдХрдард┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреНрд░реЛрдо рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЕрдиреБрдХреНрд░рдо "рдкрд╣рд▓реЗ рд╣реИрдВрдбрд▓рд░, рдлрд┐рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ" рдЕрднреА рднреА рд╡рд┐рд╣рд┐рдд рдорд╛рдорд▓реЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ рдЬрдм keypress рдЗрд╡реЗрдВрдЯ рдХреЛ рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрд╛рда рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА keypress рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдореИрдВ рдкрд╛рдардХ рдкрд░ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВред

WebWorkers


WebWorkers рдореБрдЦреНрдп рд▓реВрдк рдХреЛ рдСрдлрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдЬрд╡рд╛рдмрджреЗрд╣реА рдореЗрдВ "рд╕рдмрд╕рд┐рдбреАрд╢рди" рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореБрдЦреНрдп рд▓реВрдк рдХреЗ рд╕рд╛рде, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдбреЛрдо рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдЙрди рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ)ред

WebWorker рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдкрдиреА "рдХреЛрд░" рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдПрдХ рд╡реЙрдХрд░ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рд╛рдБ, рд╣рд╛рдБ - рдЙрд╕реА рдХрддрд╛рд░ рдореЗрдВ рдЬреЛ рд╕рдм рдХреБрдЫ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ xm рд╕реЗ wav рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдорд▓реНрдЯреА-рдореЗрдЧрд╛рдмрд╛рдЗрдЯ bzip рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ WebWorkers рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдпрд╣ рдиреЛрдб.рдЬреЗрдПрд╕ рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


рдпрд╣ рдЦрдВрдб рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдиреЛрдб рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рди setTimeout рдФрд░ setInterval , рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЕрдиреНрдп IO рдХреА рдШрдЯрдирд╛рдПрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рддрд░реНрдХ рдЕрд▓рдЧ рд╣реИрдВред

рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ, рдлрд╝рдВрдХреНрд╢рди process.nextTick рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ setTimeout(тАж, 0) рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдЯрд╛рдЗрдорд░ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рдиреЛрдб.рдЬреЗрдПрд╕ рдЯрд╛рдЗрдорд░ рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд╕реНрддреБред рдЦреИрд░, рдиреЛрдб 4 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реАрдорд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░реЗрдВ: рд╕рдордЭреЗрдВ рдХрд┐ рдореБрдЦреНрдп рдЪрдХреНрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡рд┐рд▓рдВрдм рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдЖрдЧреЗ рдкрдврд╝рдиреЗ / рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП:

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


All Articles