
рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!
рдореИрдВ рдЖрдкрд▓ рд╢рд╛рд╣
рдХреЗ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ,
"рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЙрдорд┐рд╕ рдХрд░реЗрдВ рдХрд┐ рд╣рд░ рд╢реБрд░реБрдЖрдд рдХреЛ рдЬрд╛рдирдирд╛ рдФрд░ рдЯрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП ред
"рдХреЙрдорди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЙрдорд┐рд╕ рдореИрдЯрд░ рдПрдмреНрд░реАрдмреНрдпреВрдб рдПрдмрд╛рдЙрдЯ рдиреЛ рд╣рд╛рдЙрдЯ рдиреЛ рдЕрдмрд╛рдЙрдЯ
рдЬрдм рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╡рд╛рджреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рддреЛ рдореИрдВ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдЬрдм рднреА рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░ рдореБрдЭ рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВред рдЬрдм рдореИрдВрдиреЗ 4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реБрд░реВ рдХреА рдереА, рддреЛ рдореБрдЭреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реМрдВрдкреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреЛ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдПрдХ рд▓рд╛рдЦ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддреА рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдерд╛ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЙрд╕ рд╕реНрддрд░ рддрдХ рдкрд╣реБрдБрдЪ рдЧрдП рдЬрд╣рд╛рдБ рдЖрдЧреЗ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЧрдИ)ред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЬреЗрдПрд╕ рдореЗрдВ рд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рди рдкрд░ рдХрдИ рд▓реЛрдЧ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред
рдЧрд▓рддреА # 1. рдПрдХ рд╡рд╛рджрд╛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдХреЛрд╢рд┐рд╢ / рдкрдХрдбрд╝ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╡рд╛рджреЗ рдХреЗ рдЕрдВрджрд░ рдЯреНрд░рд╛рдЗ / рдХреИрдЪ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдПрдХ рддреНрд░реБрдЯрд┐ (рд╡рд╛рджреЗ рдХреЗ рдЕрдВрджрд░) рдлреЗрдВрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рджреЗ рдХреЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рд╣реИ:
new Promise((resolve, reject) => { try { const data = someFunction()
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдХреЛрдб рдХреЛ рд╡рд╛рджреЗ рдХреЗ рдмрд╛рд╣рд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рджреЗрдВ:
new Promise((resolve, reject) => { const data = someFunction()
рдпрд╣ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╕рд┐рд╡рд╛рдп рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХреЗред
рдЧрд▓рддреА рдирдВрдмрд░ 2. рдПрдХ рд╡рд╛рджрд╛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХреБрдЫ рдЕрдкреНрд░рд┐рдп рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдкреНрд░реЙрдорд┐рд╕ рдХреЗ рднреАрддрд░ рд╣реЛрддреЗ рд╣реИрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдХреБрдЫ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рд╡рдЪрди рдореЗрдВ "async" рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдЖрдкрдХрд╛ рдХреЛрдб рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм рдЖрдк .catch () рдпрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ:
рдЬрдм рднреА рдореИрдВ рдХрд┐рд╕реА рд╡рд╛рджреЗ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ рдореИрдВ рдЗрд╕реЗ 10 рдореЗрдВ рд╕реЗ 9 рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рджреЗ рдХреЗ рдЕрдВрджрд░ рдХреА рдХреЛрд╢рд┐рд╢ / рдХреИрдЪ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ (рд╣рд╛рдБ, рдпрд╣ рдкрд╣рд▓реА рддреНрд░реБрдЯрд┐ рдХрд╛ рдЦрдВрдбрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ):
new Promise(async(resolve, reject) => { try { throw new Error('message') } catch(error) { reject(error) } }).catch(e => console.log(e.message))
рдЧрд▓рддреА рд╕рдВрдЦреНрдпрд╛ 3. .рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдУ ()
рдпрд╣ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рд╣реЛрдиреЗ рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред рдпрд╛, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдирд╛рд╕реНрддрд┐рдХ рд╣реИрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рдХреЛрдб рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ
рдЙрддреНрдкрд╛рджрди рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдЙрддреНрдкрд╛рджрди рд╕рдЦреНрддреА рд╕реЗ
рдорд░реНрдлреА рдХреЗ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ: "рдЬреЛ рдХреБрдЫ рднреА рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рдЧрд▓рдд рд╣реЛрдЧрд╛" - рд▓рдЧрднрдЧред
рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк .then ()ред Catch () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╡рд╛рджреЗ рдХреЛ рдХреЛрд╢рд┐рд╢ / рдкрдХрдбрд╝ рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВред
рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ 4. Promise.all () рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ
Promise.all () рдЖрдкрдХрд╛ рдорд┐рддреНрд░ рд╣реИред
рдпрджрд┐ рдЖрдк рдПрдХ рдкреЗрд╢реЗрд╡рд░ рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рд╕рдордЭреЗрдВ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рди рдХрд░рдиреЗ рдХреЗ рдХрдИ рд╡рд╛рджреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рд╕рдордп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡рд╛рджреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрджрд┐ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рддреЛ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧреЗрдЧрд╛ред Promise.all () рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
const {promisify} = require('util') const sleep = promisify(setTimeout) async function f1() { await sleep(1000) } async function f2() { await sleep(2000) } async function f3() { await sleep(3000) }
рдЕрдм Promise.all рдХреЗ рд╕рд╛рде ():
(async() => { console.time('concurrent') await Promise.all([f1(), f2(), f3()]) console.timeEnd('concurrent')
рдЧрд▓рддреА рдирдВред 5. рд╡рд╛рджрд╛рдЦрд┐рд▓рд╛рдлреА рдХрд╛ рдЕрдиреБрдЪрд┐рдд рдЙрдкрдпреЛрдЧ ()
Promise.race () рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рддреЗрдЬ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред
рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ Promise.race () рдПрдХ рдмреЗрдХрд╛рд░ рд╡рд┐рдзрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рднреА рд╡рд╛рджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП Promise.race () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рджреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрдЧрд╛ред Promise.race () рд╕рднреА рд╡рд╛рджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдзрд╛рд░рд╛ рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛:
const {promisify} = require('util') const sleep = promisify(setTimeout) async function f1() { await sleep(1000) } async function f2() { await sleep(2000) } async function f3() { await sleep(3000) } (async() => { console.time('race') await Promise.race([f1(), f2(), f3()]) })(); process.on('exit', () => { console.timeEnd('race')
рдЧрд▓рддреА рдирдВрдмрд░ 6. рд╡рд╛рджреЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ
рд╡рд╛рджреЗ рдХреЛрдб рдХреЛ рдзреАрдорд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рди рдХрд░реЗрдВред
рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмреА .then () рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрдВрдЦ рдЭрдкрдХрд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрд╣реБрдд рд▓рдВрдмреА рд╣реЛ рдЬрд╛рддреА рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореИрдВ рдореВрд▓ рдкрд╛рда рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣рдЯрд╛ рджреВрдВрдЧрд╛ рддрд╛рдХрд┐ рд▓реЗрдЦ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд▓рдЧрднрдЧ)ред
1) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА (рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде) рдХреЗ рд╕рд╛рде рдПрдХ script.js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
new Promise((resolve) => {
2) рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЦреЛрд▓реЗрдВ (рд╡рд┐рдВрдбреЛрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП: рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, Shift рджрдмрд╛рдП рд░рдЦреЗрдВ, рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, "рдУрдкрди рдХрдорд╛рдВрдб рд╡рд┐рдВрдбреЛ" рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ), рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ script.js рдЪрд▓рд╛рдПрдВ (рдиреЛрдб рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреЗ рдПрд╕):
node --trace-events-enabled script.js
3) Node.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ node_trace.1.txt) рдмрдирд╛рддрд╛ рд╣реИ;
4) рдУрдкрди рдХреНрд░реЛрдо (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ), рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ "рдХреНрд░реЛрдо: // рдЯреНрд░реЗрд╕рд┐рдВрдЧ" рджрд░реНрдЬ рдХрд░реЗрдВ;
5) рд▓реЛрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, Node.js рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ;
6) рд╡рд╛рджрд╛ рдЯреИрдм рдЦреЛрд▓реЗрдВред
рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдЧреНрд░реАрди рдмреНрд▓реЙрдХ рд╡рд╛рджреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЬрд┐рддрдиреЗ рдЕрдзрд┐рдХ рд╡рд╛рджреЗ рд╣реЛрдВрдЧреЗ, рдЙрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╣рдо script.js рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
new Promise((resolve, reject) => { const user = { name: 'John Doe', age: 50, } if(user.age > 25) { resolve() } else { reject('Age is less than 25') } }).then(() => { console.log('Age is greater than 25') }).catch(e => { console.log(e.message) })
"рдЯреНрд░реЗрд╕" рджреЛрд╣рд░рд╛рдПрдВред
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦрддреЗ рд╣реИрдВ:

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