Node.js рдЧрд╛рдЗрдб, рднрд╛рдЧ 6: рдЗрд╡реЗрдВрдЯ рд▓реВрдк, рдХреЙрд▓ рд╕реНрдЯреИрдХ, рдЯрд╛рдЗрдорд░

рдЖрдЬ, Node.js рдореИрдиреБрдЕрд▓ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рдЫрдареЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдИрд╡реЗрдВрдЯ рд▓реВрдк, рдХреЙрд▓ рд╕реНрдЯреИрдХ, process.nextTick() рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдЗрди рдФрд░ рдЕрдиреНрдп Node.js рддрдВрддреНрд░ рдХреЛ рд╕рдордЭрдирд╛ рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╕рдлрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдХреЛрдиреЗрд╕реНрдЯреЛрди рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред



[рд╣рдо рдЖрдкрдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ] рдЪрдХреНрд░ рдХреЗ рдЕрдиреНрдп рднрд╛рдЧ
рднрд╛рдЧ 1: рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЖрд░рдВрдн рдХрд░рдирд╛
рднрд╛рдЧ 2: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, V8, рдХреБрдЫ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЧреБрд░
рднрд╛рдЧ 3: рд╣реЛрд╕реНрдЯрд┐рдВрдЧ, рдЖрд░рдИрдкреАрдПрд▓, рдХрдВрд╕реЛрд▓, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рднрд╛рдЧ 4: npm, package.json рдФрд░ package-lock.json рдлрд╛рдЗрд▓реЗрдВ
рднрд╛рдЧ 5: npm рдФрд░ npx
рднрд╛рдЧ 6: рдИрд╡реЗрдВрдЯ рд▓реВрдк, рдХреЙрд▓ рд╕реНрдЯреИрдХ, рдЯрд╛рдЗрдорд░
рднрд╛рдЧ 7: рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
рднрд╛рдЧ 8: Node.js рдЧрд╛рдЗрдб, рднрд╛рдЧ 8: HTTP рдФрд░ WebSocket рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рднрд╛рдЧ 9: Node.js рдЧрд╛рдЗрдб, рднрд╛рдЧ 9: рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
рднрд╛рдЧ 10: Node.js рдЧрд╛рдЗрдб, рднрд╛рдЧ 10: рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓, рд╕реНрдЯреНрд░реАрдо, рдбреЗрдЯрд╛рдмреЗрд╕, NODE_ENV
Node.js рдЧрд╛рдЗрдб рдХреА рдкреВрд░реНрдг рдкреАрдбреАрдПрдл

рдШрдЯрдирд╛ рдкрд╛рд╢


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

рдореИрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдЧрдпрд╛ рд╣реВрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, "рд╣реБрдб рдХреЗ рдиреАрдЪреЗ"ред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЙрдкрддрдВрддреНрд░реЛрдВ рдХреЗ рдЙрдкрдХрд░рдг рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдРрд╕реА рдЪреАрдЬреЛрдВ рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реЛрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред

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

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

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

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

рдЗрд╡реЗрдВрдЯ рд▓реВрдк рд▓реЙрдХ


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

рд▓рдЧрднрдЧ рд╕рднреА рдореВрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ I / O рддрдВрддреНрд░ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реИрдВред рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ Node.js. рджреЛрдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрдВрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рд╡рд╛рддрд╛рд╡рд░рдг рджреЛрдиреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ Node.js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕реЗ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордХрд╛рд▓рд┐рдХ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХреЙрд▓рдмреИрдХ рдФрд░ рдирдП рддрдВрддреНрд░ - рд╡рд╛рджреЗ рдФрд░ async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд┐рд░реНрдорд╛рдг - рдХрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡ рд╣реИред

рдХреЙрд▓ рд╕реНрдЯреИрдХ


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

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


рдмреНрд░рд╛рдЙрдЬрд╝рд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢

рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдЬрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреЙрд▓ рдЯреВ рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЙрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХрд╛ рдореМрдХрд╛ рджреЗрддреА рд╣реИ рдХрд┐ рдХрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

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

рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдФрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ


рдпрд╣рд╛рдВ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

 const bar = () => console.log('bar') const baz = () => console.log('baz') const foo = () => { console.log('foo') bar() baz() } foo() 

рдпрджрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдХрдВрд╕реЛрд▓ рдорд┐рд▓реЗрдЧрд╛:

 foo bar baz 

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


рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдирд╛

рдИрд╡реЗрдВрдЯ рд▓реВрдк, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдХреБрдЫ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдЦрд╛рд▓реА рд╣реЛрдиреЗ рддрдХ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред


рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ

рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛


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

 setTimeout(() => {}), 0) 

рдпрд╣ рдЖрдкрдХреЛ setTimeout() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдореЗрдВ рд╕рднреА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 const bar = () => console.log('bar') const baz = () => console.log('baz') const foo = () => { console.log('foo') setTimeout(bar, 0) baz() } foo() 

рдпрд╣ рдХреЛрдб рдкреНрд░рд┐рдВрдЯ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддреАрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 foo baz bar 

рдЬрдм рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ foo() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдо setTimeout() , рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП, рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, bar ред рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдХреЗ, рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддрдм рд╣рдо baz() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдЕрдм рджрд┐рдЦреЗрдЧрд╛ред


рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдирд╛

рдпрд╣рд╛рдВ рд╡рд╣ рдХреНрд░рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ

рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рдШрдЯрдирд╛ рдХрддрд╛рд░


рдЬрдм setTimeout() рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╛ Node.js рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдХ рдЯрд╛рдЗрдорд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЯрд╛рдЗрдорд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рддреБрд░рдВрдд рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ 0 рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ), рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди setTimeout() рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╡реЗрдВрдЯ рдХреНрдпреВ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред

рдШрдЯрдирд╛ рдХреА рдХрддрд╛рд░, рдЬрдм рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рдШрдЯрдирд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВ - рдкреГрд╖реНрда рддрддреНрд╡реЛрдВ рдкрд░ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдПрдБ, рдЬрдм рдХреАрдмреЛрд░реНрдб рд╕реЗ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдРрд╕реА рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдбреЙрдо onload рд╣реИрдВрдбрд▓рд░ рдЬреИрд╕реЗ onload , рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рддреБрд░рдВрдд рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╡реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдмрд╛рд░реА рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

рд╣рдореЗрдВ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ setTimeout() рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдЕрдкрдиреА рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, setTimeout() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрдорд░ рдХреЛ 2 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдирд╛, рдЖрдкрдХреЛ рджреВрд╕рд░реЗ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП, рдЗрди 2 рд╕реЗрдХрдВрдб рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдорд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

ES6 рдиреМрдХрд░реА рдХрддрд╛рд░


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

рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╡рд╛рджрд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 const bar = () => console.log('bar') const baz = () => console.log('baz') const foo = () => { console.log('foo') setTimeout(bar, 0) new Promise((resolve, reject) =>   resolve('should be right after baz, before bar') ).then(resolve => console.log(resolve)) baz() } foo() 

рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реЛрдЧрд╛:

 foo baz should be right after baz, before bar bar 

рдпрд╣рд╛рдВ рдЖрдк рдЬреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рд╡рд╛рджреЛрдВ (рдФрд░ async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд┐рд░реНрдорд╛рдг, рдЬреЛ рдЙрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ) рдФрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдЧрдВрднреАрд░ рдЕрдВрддрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди setTimeout() рдпрд╛ рдордВрдЪ рдХреЗ рдЕрдиреНрдп рдПрдкреАрдЖрдИ setTimeout() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

process.nextTick ()


process.nextTick() рд╡рд┐рдзрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддреА рд╣реИред рдПрдХ рдЯрд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЪрдХреНрд░ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЛ process.nextTick() рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛, рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдЧрд▓реЗ рд▓реВрдк рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреА рд╡рд░реНрддрдорд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 process.nextTick(() => { // -  }) 

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк setTimeout(() => {}, 0) рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рдд, рдЬрдм process.nextTick() рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмрд╛рдж рдореЗрдВред рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреБрдЫ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред

рд╕реЗрдЯрдореАрдбрд┐рдПрдЯ ()


рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП Node.js рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЕрдиреНрдп рдХрд╛рд░реНрдп setImmediate() ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ:

 setImmediate(() => { //   }) 

рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ setImmediate() рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреЗ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

setImmediate() , setTimeout(() => {}, 0) (рдЬреЛ рдХрд┐ рдЯрд╛рдЗрдорд░ рд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП) рдФрд░ process.nextTick() ?

рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ process.nextTick() рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдХреА рд╡рд░реНрддрдорд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдЕрд░реНрдерд╛рддреН, рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдореЗрд╢рд╛ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди setImmediate() рдпрд╛ setImmediate() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

рдЯрд╛рдЗрдорд░


рд╣рдо рдкрд╣рд▓реЗ рд╣реА setTimeout() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдкрд╛рд╕ рджрд┐рдП рдЧрдП рдХреЙрд▓рдмреИрдХ рдкрд░ рдХреЙрд▓ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рд╣рдо рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рдорд╛рди рдПрдХ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди, setInterval() рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред Node.js рдореЗрдВ рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдЯрд╛рдЗрдорд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреЛрдб рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВред

тЦН рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ ()


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

 setTimeout(() => { //   2  }, 2000) setTimeout(() => { //   50  }, 50) 

рдпрд╣рд╛рдВ рд╣рдо рддреБрд░рдВрдд рд╡рд░реНрдгрд┐рдд setTimeout() рдирдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ setTimeout() рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдо setTimeout() рдЗрд╕рдХрд╛ рдирд╛рдо рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкрд╛рд╕ рдХрд░рдХреЗ рдореМрдЬреВрджрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 const myFunction = (firstParam, secondParam) => { //   } //   2  setTimeout(myFunction, 2000, firstParam, secondParam) 

setTimeout() рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЯрд╛рдЗрдорд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреЗрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЯрд╛рдЗрдорд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдпрджрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЙрд▓рдмреИрдХ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

 const id = setTimeout(() => { //      2  }, 2000) //  ,       clearTimeout(id) 

Delay рд╢реВрдиреНрдп рд╡рд┐рд▓рдВрдм


рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдЗрд╕реЗ setTimeout() рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП, рдЬрд┐рд╕ рд╕рдордп рдХреЗ рдмрд╛рдж рдХреЙрд▓рдмреИрдХ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, 0 ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдХреЙрд▓рдмреИрдХ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж:

 setTimeout(() => { console.log('after ') }, 0) console.log(' before ') 

рдРрд╕рд╛ рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛:

 before after 

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

рдпрджрд┐ рд╣рдо рдЙрдкрд░реЛрдХреНрдд setImmediate() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ Node.js рдореЗрдВ рдорд╛рдирдХ рд╣реИ, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ IE рдФрд░ рдПрдЬ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдореЗрдВ рдирд╣реАрдВ)ред

Ter рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯрдЗрдВрдЯрд░рд╡рд▓ ()


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

 setInterval(() => { //   2  }, 2000) 

рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдПрдХ рдХреЙрд▓рдмреИрдХ рдХреЛ рд╣рд░ 2 рд╕реЗрдХрдВрдб рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯрд╛рдЗрдорд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ setInterval() рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдФрд░ clearInterval() рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА clearInterval() :

 const id = setInterval(() => { //   2  }, 2000) clearInterval(id) 

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрдХрдиреАрдХ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ clearInterval() рдЬрдм рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╢рд░реНрдд рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ рддреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЕрдВрджрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ setInterval() ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рд╕рдордп-рд╕рдордп рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ App.somethingIWait рд╕рдВрдкрддреНрддрд┐ arrived рд▓рд┐рдП App.somethingIWait рд╣реЛ:

 const interval = setInterval(function() { if (App.somethingIWait === 'arrived') {   clearInterval(interval)   //    -  ,   -    } }, 100) 

тЦН рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ ()


setInterval() рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓рдмреИрдХ рдХреЛ рд╣рд░ n рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкрд░ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдмрд┐рдирд╛ рдЗрд╕ рдЪрд┐рдВрддрд╛ рдХреЗ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреЙрд▓рдмреИрдХ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдкреВрд░рд╛ рд╣реБрдЖ рд╣реИред

рдпрджрд┐ рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЛ рд╣рдореЗрд╢рд╛ n рд╕реЗ рдХрдо рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдЖрддреА рд╣реИред


рд╕рдордп-рд╕рдордп рдкрд░ рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рддреНрд░ рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рднреАрддрд░ рдЧрд┐рд░рдиреЗ, рдПрдХ рд╣реА рд╕рдордп рд▓реЗрддрд╛ рд╣реИ

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


рд╕рдордп-рд╕рдордп рдкрд░ рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рддреНрд░ рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдЧрд┐рд░рдиреЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ

setInterval() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХреЙрд▓рдмреИрдХ n рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЕрдЧрд▓рд╛ рдХреЙрд▓ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


рд╕рдордп-рд╕рдордп рдкрд░ рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдХрднреА-рдХрднреА рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк setTimeout() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЯрд╛рдЗрдорд░ рд╕реЗрдЯрд┐рдВрдЧ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд▓реА рдХреЙрд▓рдмреИрдХ рдХреЙрд▓ рдХреА рдпреЛрдЬрдирд╛ рдЗрд╕рдХреЗ рдкрд┐рдЫрд▓реЗ рдХреЙрд▓ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реИ:

 const myFunction = () => { //    setTimeout(myFunction, 1000) } setTimeout( myFunction() }, 1000) 

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП setTimeout () рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓

рдкрд░рд┐рдгрд╛рдо


рдЖрдЬ рд╣рдордиреЗ Node.js рдХреЗ рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рдЬреИрд╕реЗ рдХрд┐ рдЗрд╡реЗрдВрдЯ рд▓реВрдк, рдХреЙрд▓ рд╕реНрдЯреИрдХ, рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЕрдЧрд▓реА рдмрд╛рд░ рд╣рдо рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╡рд┐рд╖рдп рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░реЗрдВрдЧреЗред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдкрдХреЛ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ process.nextTick () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛?

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


All Articles