рд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!

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

рд╢рд░реНрддреЗрдВ: рдмреБрдирд┐рдпрд╛рджреА рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд╛рдХреНрд╖рд░рддрд╛, рдЬреЗрдПрд╕ рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдХрд╛ рдЬреНрдЮрд╛рдиред
рдЙрджреНрджреЗрд╢реНрдп: рд╕рдордЭреЗрдВ рдХрд┐ рд╡рд╛рджреЗ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╛рджреЗ рдХреНрдпрд╛ рд╣реИрдВ?


рд╣рдордиреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд╛рджреЛрдВ рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореАрдХреНрд╖рд╛ рдХреА , рдпрд╣рд╛рдВ рд╣рдо рдЙрди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

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

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

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

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

рдпрджрд┐ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдореБрдЦреНрдп рдзрд╛рдЧреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рддрдм рддрдХ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ getUserMedia () рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рд╡рд╛рджреЛрдВ рдХреЗ рдмрд┐рдирд╛, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ "рдЧреИрд░-рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдФрд░ рдХреИрдорд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдирд┐рд░реНрдгрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдФрд░ рд╕реНрд░реЛрддреЛрдВ (рдХреИрдорд░рд╛ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди) рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП MediaStream рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп , GetUserMedia () рдпрд╣ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реА MediaStream рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред

рд╡реАрдбрд┐рдпреЛ рдЪреИрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

function handle CallButton(evt){
    setStatusMessage('Calling...')
    navigator.mediaDevices.getUserMedia({video: true, audio: true})
    .then(chatStream => {
        selfViewElem.srcObject = chatStream
        chatStream.getTracks().forEach(track => myPeerConnection.addTrack(track, chatStream))
        setStatusMessage('Connected')
    }).catch(err => {
        setStatusMessage('Failed to connect')
    })
}

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

рдпрджрд┐ getUserMedia () рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рдХреИрдЪ рдмреНрд▓реЙрдХ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП setStatusMessage () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

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

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

рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕рдорд╕реНрдпрд╛


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

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдкрд┐рдЬреНрдЬрд╛ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдПрдХ рд╕рдлрд▓ рдкрд┐рдЬреНрдЬрд╛ рдСрд░реНрдбрд░ рдореЗрдВ рдХрдИ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдХреНрд░рдо рдореЗрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ:

  1. рдлрд┐рд▓рд┐рдВрдЧ рдЪреБрдиреЗрдВред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдорди рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдХрд░реА рдХрд╛ рдЖрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдЕрд╕рдлрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
  2. рд╣рдо рдПрдХ рдЖрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВред рдЦрд╛рдирд╛ рдкрдХрд╛рдиреЗ рдХреЗ рдкрд┐рдЬреНрдЬрд╛ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рд░реЗрд╕реНрддрд░рд╛рдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдордЧреНрд░реА рдХреА рдХрдореА рд╣реИ рддреЛ рд╡рд╣ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  3. рд╣рдо рдкрд┐рдЬреНрдЬрд╛ рдЦрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЦрд╛рддреЗ рд╣реИрдВред рдкрд┐рдЬреНрдЬрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкреБрд░рд╛рдиреА рд╢реИрд▓реА рдХрд╛ рдЫрджреНрдордХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ:

chooseToppings(function(toppings){
    placeOrder(toppings, function(order){
        collectOrder(order, function(pizza){
            eatPizza(pizza)
        }, failureCallback)
    }, failureCallback)
}, failureCallback)

рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рдХрдард┐рди рд╣реИ (рдЗрд╕реЗ рдЕрдХреНрд╕рд░ "рдХреЙрд▓рдмреИрдХ рдХрд╛ рдирд░рдХ" рдпрд╛ "рдХреЙрд▓рдмреИрдХ рдХрд╛ рдирд░рдХ") рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╡рд┐рдлрд▓рддрд╛ рдХреЙрд▓рдмреИрдХ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

рд╣рдо рд╡рд╛рджреЗ рдХрд░рддреЗ рд╣реИрдВ


рд╡рд╛рджреЗ рдХреЛрдб рдХреЛ рдХреНрд▓реАрдирд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдФрд░ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЫрджреНрдордХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:

chooseToppings()
.then(function(toppings){
    return placeOrder(toppings)
})
.then(function(order){
    return collectOrder(order)
})
.then(function(pizza){
    eatPizza(pizza)
})
.catch(failureCallback)

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

рддреАрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЫрджреНрдо рдХреЛрдб рдХреЛ рдФрд░ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

chooseToppings()
.then(toppings =>
    placeOrder(toppings)
)
.then(order =>
    collectOrder(order)
)
.then(pizza =>
    eatPizza(pizza)     
)
.catch(failureCallback)

рдпрд╛ рдЗрд╕ рддрд░рд╣ рднреА:

chooseToppings()
.then(toppings => placeOrder(toppings))
.then(order => collectOrder(order))
.then(pizza => eatPizza(pizza))
.catch(failureCallback)

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ () => x рд╕рдорд╛рди рд╣реИ () => {рд░рд┐рдЯрд░реНрди x}ред

рдЖрдк рдпрд╣ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЪреВрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдмрд╕ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рд▓реЗрдпрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ):

chooseToppings().then(placeOrder).then(collectOrder).then(eatPizza).catch(failureCallback)

рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ рдФрд░ рдЫрджреНрдордХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рд╡рд╛рджреЗ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдорддрднреЗрджреЛрдВ рдХреЗ рд╕рд╛рде:

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

рдореВрд▓ рд╡рд╛рджрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕: рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг


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

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

рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ (рдпрд╛рдиреА рдлрд╝рд╛рдЗрд▓: // URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рддреЛ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдСрдирд▓рд╛рдЗрди рд╕рдорд╛рдзрд╛рди рдЬреИрд╕реЗ рдЧреНрд▓рд┐рдЪ рдпрд╛ рдЧрд┐рдЯрд╣рдм рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ ред

1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЬреЛ HTML рдФрд░ рдЗрдореЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ , рдЙрд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ ред

2. <body> рдХреЗ рдЕрдВрдд рдореЗрдВ <script> рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ ред 3. <рд╕реНрдХреНрд░рд┐рдкреНрдЯ> рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░, рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:



let promise = fetch('coffee.jpg')

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

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

рдзреНрдпрд╛рди рджреЗрдВред .Then () рдмреНрд▓реЙрдХ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди AddEventListener () рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣ рдШрдЯрдирд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж (рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж) рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ .en () рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╢реНрд░реЛрддрд╛ рдХрдИ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмреВрдБрдж рд╡рд╕реНрддреБ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмреВрдБрдж () рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ:

response => response.blob()

... рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реИ:

function (response){
    return response.blob()
}

рдареАрдХ рд╣реИ, рдкрд░реНрдпрд╛рдкреНрдд рд╢рдмреНрджред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд╛рдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

let promise2 = promise.then(response => response.blob())

5. .then () рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ: рдЪреВрдВрдХрд┐ рдмреВрдБрдж () рднреА рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рджреВрд╕рд░реЗ рд╡рд╛рджреЗ рдкрд░ .then () рдХреЙрд▓ рдХрд░рдХреЗ рдмреВрдБрдж рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдХреЛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЕрдиреНрдпрдерд╛, рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛):

рдХреЛрдб рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

let promise3 = promise2.then(myBlob => {

})

6. рдЪрд▓реЛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рднрд░реЗрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

let objectURL = URL.createObjectURL(myBlob)
let image = document.createElement('img')
image.src = objectURL
document.body.appendChild(image)

рдпрд╣рд╛рдВ рд╣рдо URL.createObjectURL () рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдПрдХ рдмреВрдБрдж рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдиреЗ рджреВрд╕рд░рд╛ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ред рд╣рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓рддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдПрдХ <img> рддрддреНрд╡ рдмрдирд╛рддреЗ рд╣реИрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд┐рдВрдХ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде src рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ DOM рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреЗрдЬ рдкрд░ рдЫрд╡рд┐ рджрд┐рдЦрд╛рдИ рджреЗред

рдпрджрд┐ рдЖрдк HTML рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЫрд╡рд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реИред рдЕрдЪреНрдЫрд╛ рдХрд╛рдо!

рдзреНрдпрд╛рди рджреЗрдВред рдЖрдкрдиреЗ рд╢рд╛рдпрдж рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдпреЗ рдЙрджрд╛рд╣рд░рдг рдХреБрдЫ рд╣рдж рддрдХ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд╣реИрдВред рдЖрдк рдмрд┐рдирд╛ рднреНрд░реВрдг () рдФрд░ рдмреВрдБрдж () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ <img> рдЗрд╕реА URL, Coffee.jpg рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЧрдПред

рд╡рд┐рдлрд▓рддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛


рд╣рдо рдХреБрдЫ рднреВрд▓ рдЧрдП - рд╡рд╛рджреЛрдВ рдХреЗ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ (рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╣рдо .catch () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓реЛ рдХрд░рддреЗ рд╣реИрдВ:

let errorCase = promise3.catch(e => {
    console.log('There has been a problem with your fetch operation: ' + e.message)
})

рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЧрд▓рдд рдЫрд╡рд┐ URL рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВред рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

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

рдзреНрдпрд╛рди рджреЗрдВред рдПрдХ рд▓рд╛рдЗрд╡ рдбреЗрдореЛ ( рд╕реНрд░реЛрдд рдХреЛрдб ) рджреЗрдЦреЗрдВред

рдмреНрд▓реЙрдХ рд╡рд┐рд▓рдп


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗ рд╡рд╣ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИред рд╣рдо рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЧрдП рддрд╛рдХрд┐ рдЖрдк рд╕рдордЭ рд╕рдХреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо .then () рдмреНрд▓реЙрдХ (рдФрд░ .catch) рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ( GitHub рдкрд░ рд╕рд░рд▓-рдкреНрд░рд╛рдкреНрдд-рдЪреИрдирдбреЙрдЯрдЗрди рднреА рджреЗрдЦреЗрдВ ):

fetch('coffee.jpg')
.then(response => response.blob())
.then(myBlob => {
    let objectURL = URL.createObjectURL(myBlob)
    let image = document.createElement('img')
    image.src = objectURL
    document.body.appendChild(image)
})
.catch(e => {
    console.log('There has been a problem with your fetch operation: ' + e.message)
})

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╡рд╛рджреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди .then () рдмреНрд▓реЙрдХ рдХреЗ рдЕрдЧрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВред .Then () /ред Catch () рд╡рд╛рджреЛрдВ рдореЗрдВ рдмреНрд▓реЙрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЯреНрд░рд╛рдЗ ... рдХреЛ рдмреНрд▓реЙрдХ рдкрдХрдбрд╝рдиреЗ рдХреЗ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рдорддреБрд▓реНрдп рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ: рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЯреНрд░рд╛рдЗ ... рдХреИрдЪ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╢рдмреНрджрд╛рд╡рд▓реА рд╢рдмреНрджрд╛рд╡рд▓реА рдирд┐рд╖реНрдХрд░реНрд╖


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

1. рдЬрдм рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред
2. рдЬрдм рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛ (рд╣рд▓):

  1. 1. рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд╛рджрд╛ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЙрд╕ рдореВрд▓реНрдп рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╛рджреЗ рдХреЗ рдЕрдВрдд рдореЗрдВ .then () рд╕реЗ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред .Then () рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдЧреНрдЬреАрдХреНрдпреВрдЯрд┐рдВрдЧ рдлрдВрдХреНрд╢рди рдореЗрдВ рд╡рд╛рджреЗ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдп рд╣реЛрддреЗ рд╣реИрдВред
  2. 2. рдЕрд╕рдлрд▓ рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд╣рд▓рд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░рдг, рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рджреЗ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред рдпрд╣ рдХрд╛рд░рдг рд╡рд╛рджреЗ рдХреЗ рдЕрдВрдд рдореЗрдВ .catch () рдмреНрд▓реЙрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрдИ рд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рдж рдХреЛрдб рдЪрд▓рд╛рдПрдВ


рд╣рдордиреЗ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реАрдЦреАрдВред рдЕрдм рдЖрдЗрдП рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВред .Then () рд╕реЗ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╡рд╛рджреЛрдВ рдХреЗ рдХрдИ рдмреНрд▓реЙрдХ рдмреБрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдЖрдк рдорд╛рдирдХ Promise.all () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рджреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реЗрддреА рд╣реИ рдФрд░ рд╕рд░рдгреА рдореЗрдВ рд╕рднреА рд╡рд╛рджреЗ рдкреВрд░реЗ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдирдпрд╛ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддреА рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

Promise.all([a,b,c]).then(values => {
        ...
})

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

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

рдЖрдЗрдП рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
1. рдкреГрд╖реНрда рдЯреЗрдореНрдкрд▓реЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдмрдВрдж рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ <script> рдЯреИрдЧ рд▓рдЧрд╛рдПрдВ </ body> рдЯреИрдЧред

2. рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ ( Coffee.jpg , tea.jpg рдФрд░ description.txt) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ) рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред

3. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдо Promise.all () рдХреЛ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рддреАрди рднреНрд░реВрдг () рд╕рдВрдЪрд╛рд▓рди рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Promise.all () рдЪрд▓рд╛рддреЗ рд╣реИрдВред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

let a = fetch(url1)
let b = fetch(url2)
let c = fetch(url3)

Promise.all([a, b, c]).then(values => {
    ...
})

рдЬрдм рд╡рд╛рджрд╛ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ "рдорд╛рди" рдЪрд░ рдореЗрдВ рддреАрди рд░рд┐рд╕реНрдкрд╛рдВрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдВрдЧреЗ, рдкреНрд░рддреНрдпреЗрдХ рдкреВрд░реНрдг рдХрд┐рдП рдЧрдП рднреНрд░реВрдг () рдСрдкрд░реЗрд╢рди рдореЗрдВ рд╕реЗ рдПрдХред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рдЬрдм рднреНрд░реВрдг () рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рднрд░рд╛ рд╣реБрдЖ рдбреЗрдЯрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдорд╛рдиреНрдп рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдмреНрд▓реЙрдм рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Promise.all () рдмреНрд▓реЙрдХ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ; рдЕрдкрдиреЗ <рд╕реНрдХреНрд░рд┐рдкреНрдЯ> рддрддреНрд╡ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

function fetchAndDecode(url, type){
    return fetch(url).then(response => {
        if(type === 'blob'){
            return response.blob()
        } else if(type === 'text'){
            return response.text()
        }
    }).catch(e => {
        console.log('There has been a problem with your fetch operation ' + e.message)
    })
}

рдпрд╣ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЪрд░рдг рджрд░ рдЪрд░рдг рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ:

1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ URL рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

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

3. рджреЛ рдЕрдВрддрд░ рд╣реИрдВ:

  • рдкрд╣рд▓рд╛, рджреВрд╕рд░рд╛ рд░рд┐рдЯрд░реНрди рд╡рд╛рджрд╛ рдореВрд▓реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛рд░реНрдп рдХреЗ рдЕрдВрджрд░, рд╣рдо if ... рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрджрд┐ рд╣рдореЗрдВ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдпрд╛рди рдХрд░рдирд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдмреВрдБрдж рдФрд░ рдкрд╛рда рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
  • -, ┬лreturn┬╗ fetch(). , (.. , blob() text(), , , ). , return .

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

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

4. рдЕрдЧрд▓рд╛, рд╣рдо рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдкрд╛рда рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддреАрди рдмрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рджреЗ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

let coffee = fetchAndDecode('coffee.jpg', 'blob')
let tea = fetchAndDecode('tea.jpg', 'blob')
let description = fetchAndDecode('description.txt', 'text')

5. рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рддреАрдиреЛрдВ рд╡рд╛рджреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдХрд┐рд╕реА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Promise.all () рдмреНрд▓реЙрдХ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЦрд╛рд▓реА рдирд┐рд╖реНрдкрд╛рджрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝реЗрдВред рддрдм ():

Promise.all([coffee, tea, description]).then(values => {

})

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рджреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реЗрддрд╛ рд╣реИред рд╕рднреА рддреАрди рд╡рд╛рджреЗ рдкреВрд░реЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдареЗрдХреЗрджрд╛рд░ рд╢реБрд░реВ рд╣реЛрдЧрд╛; рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рджреЗ (рдбрд┐рдХреЛрдб рдХрд┐рдП рдЧрдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп) рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕реЗ [рдХреЙрдлреА-рдкрд░рд┐рдгрд╛рдо, рдЪрд╛рдп-рдкрд░рд┐рдгрд╛рдо, рд╡рд┐рд╡рд░рдг-рдкрд░рд┐рдгрд╛рдо] рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

6. рдЕрдВрдд рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ (рдпрд╣рд╛рдБ рд╣рдо рдЪрд░ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдмреНрд▓реЙрдм рд╕реЗ URL рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдмрдирд╛рддреЗ рд╣реБрдП) рдФрд░ рдкреГрд╖реНрда рдкрд░ рдЪрд┐рддреНрд░ рдФрд░ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ):

console.log(values)
//       
let objectURL1 = URL.createObjectURL(values[0])
let objectURL2 = URL.createObjectURL(values[1])
let descText = values[2]

//  
let image1 = document.createElement('img')
let image2 = document.createElement('img')
image1.src = objectURL1
image2.src = objectURL2
document.body.appendChild(image1)
document.body.appendChild(image2)

//  
let para = document.createElement('p')
para.textContent = descText
document.body.appendChild(para)

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

рдзреНрдпрд╛рди рджреЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рд╣реИ, рддреЛ рдЖрдк рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХреЛрдб рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣рд╛рдВ рдПрдХ рд▓рд╛рдЗрд╡ рдбреЗрдореЛ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ ред

рдзреНрдпрд╛рди рджреЗрдВред рдЗрд╕ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдФрд░ рдбрд┐рдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ Promise.all () рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЙрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рд▓реЙрдиреНрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИHTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрдВрдЯреЗрдВрдЯ-рдЯрд╛рдЗрдк рд╣реЗрдбрд░ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП response.headers.get ('рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░') ред

рд╡рд╛рджрд╛ рдкреВрд░рд╛ / рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдЪрд▓рд╛рдПрдБ


рдЕрдХреНрд╕рд░, рдЖрдкрдХреЛ рдПрдХ рд╡рд╛рджрд╛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдкрд╣рд▓реЗ, рд╣рдореЗрдВ .then () рдмреНрд▓реЙрдХ рдФрд░ .catch () рдмреНрд▓реЙрдХ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

myPromise
.then(response => {
    doSomething(response)
    runFinalCode()
})
.catch(e => {
    returnError(e)
    runFinalCode()
})

рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ .finally () рд╡рд┐рдзрд┐ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╡рд╛рджрд╛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдмрдирд╛рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЛрдб рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

myPromise
.then(response => {
    doSomething(response)
})
.catch(e => {
    returnError(e)
})
.finally(() => {
    runFinalCode()
})

рдЖрдк рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рд▓рд╛рдЗрд╡ рдбреЗрдореЛ рд╡рд╛рджрд╛-рдЖрдЦрд┐рд░рдХрд╛рд░ . html ( рд╕реНрд░реЛрдд рдХреЛрдб )ред рдпрд╣ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ Promise.all () рдХреЗ рд░реВрдк рдореЗрдВ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╣рдо рдЕрдВрдд рдореЗрдВ () рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ fetchAndDecode () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

function fetchAndDecode(url, type){
    return fetch(url).then(response => {
        if(type === 'blob'){
            return response.blob()
        } else if(type === 'text'){
            return response.text()
        }
    }).catch(e => {
        console.log(`There has been a problem with your fetch operation for resource "${url}": ${e.message}`)
    }).finally(() => {
        console.log(`fetch attempt for "${url}" finished.`)
    })
}

рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВред рддрдм () / рдХреИрдЪ () / рдЕрдВрдд рдореЗрдВ () рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЯреНрд░рд╛рдИ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдорддреБрд▓реНрдп () / рдХреИрдЪ () / рдЕрдВрдд рдореЗрдВ () рд╣реИред

рд▓реЗрдЦрди рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рд╡рд╛рджрд╛


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

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

рдирд┐рд░реНрдорд╛рддрд╛ рд╡рд╛рджрд╛ ()


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

рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ - рдпрд╣рд╛рдВ рд╣рдо рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ () рдХреЙрд▓ рдХреЛ рдПрдХ рд╡рд╛рджреЗ рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ - рдпрд╣ рдлрд╝рдВрдХреНрд╢рди 2 рд╕реЗрдХрдВрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛, рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ "рд╕рдХреНрд╕реЗрд╕" рдХреЗ рд╕рд╛рде рд╡рд╛рджреЗ (рд╕рдВрдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛!

let timeoutPromise = new Promise((resolve, reject) => {
    setTimeout(function(){
        resolve('Success!')
    }, 2000)
})

рд╕рдорд╛рдзрд╛рди () рдФрд░ рдЕрд╕реНрд╡реАрдХрд╛рд░ () рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдирдП рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд╛рджрд╛ "рд╕рдлрд▓рддрд╛!" рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рд╣реБрдЖ рд╣реИред

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

timeoutPromise
.then((message) => {
    alert(message)
})

... рдпрд╛ рдРрд╕рд╛:

timeoutPromise.then(alert)

рдПрдХ рд▓рд╛рдЗрд╡ рдбреЗрдореЛ ( рд╕реНрд░реЛрдд рдХреЛрдб ) рджреЗрдЦреЗрдВред

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

рдзреНрдпрд╛рди рджреЗрдВред рдХреНрдпреЛрдВ рд╕рдВрдХрд▓реНрдк () рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп ()? рдлрд┐рд▓рд╣рд╛рд▓, рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдпрд╣ рд╣реИ: рдпрд╣ рд╕рдордЭрд╛рдирд╛ рдХрдард┐рди рд╣реИред

рд╣рдо рдПрдХ рд╡рд╛рджреЗ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ


рд╣рдо рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ () рдкрджреНрдзрддрд┐ - рдЬреИрд╕реЗ рд╕рдВрдХрд▓реНрдк (), рдЕрд╕реНрд╡реАрдХрд╛рд░ () рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓реНрдк () рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рд░рд▓ рдореВрд▓реНрдп рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реИ, рдЕрд░реНрдерд╛рдд рдПрдХ рддреНрд░реБрдЯрд┐ рдЬреЛ .catch () рдмреНрд▓реЙрдХ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдЖрдЗрдП рдПрдХ рд╡рд╛рджреЗ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд░реНрдд рдЬреЛрдбрд╝рдХрд░ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ, рд╕рд╛рде рд╣реА рдПрдХ рд╕рдлрд▓рддрд╛ рд╕рдВрджреЗрд╢ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдкрд┐рдЫрд▓рд╛ рдЙрджрд╛рд╣рд░рдг

рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦреЗрдВ:

function timeoutPromise(message, interval){
    return new Promise((resolve, reject) => {
        if(message === '' || typeof message !== 'string'){
            reject('Message is empty or not a string')
        } else if(interval < 0 || typeof interval !== number){
            reject('Interval is negative or not a number')
        } else{
            setTimeout(function(){
                resolve(message)
            }, interval)
        }
    })
}

рдпрд╣рд╛рдВ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджреЛ рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВ - рд╕рдВрджреЗрд╢ рдФрд░ рдЕрдВрддрд░рд╛рд▓ (рд╕рдордп рдХреА рджреЗрд░реА)ред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдПрдХ рд╡рд╛рджрд╛ рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред

рд╡рд╛рджрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ, рд╣рдо рдХрдИ рдЪреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ ... рдФрд░ рд╕рдВрд░рдЪрдирд╛рдПрдВ:

  1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рдВрджреЗрд╢ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдЦрд╛рд▓реА рд╣реИ рдпрд╛ рдХреЛрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
  2. рджреВрд╕рд░реЗ, рд╣рдо рд╕рдордп рдХреА рджреЗрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдЛрдгрд╛рддреНрдордХ рд╣реИ рдпрд╛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рднреА рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
  3. рдЕрдВрдд рдореЗрдВ, рдпрджрд┐ рджреЛрдиреЛрдВ рддрд░реНрдХ рдареАрдХ рд╣реИрдВ, рддреЛ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп (рдЕрдВрддрд░рд╛рд▓) рдХреЗ рдмрд╛рдж рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред

рдЪреВрдВрдХрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯрдкреНрд░реЙрдорд┐рд╕ () рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ .then (), .catch (), рдЖрджрд┐ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓реЛ рдХрд░рддреЗ рд╣реИрдВ:

timeoutPromise('Hello there!', 1000)
.then(message => {
    alert(message)
}).catch(e => {
    console.log('Error: ' + e)
})

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

рдзреНрдпрд╛рди рджреЗрдВред рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╣рдорд╛рд░реЗ рд╕рдВрд╕реНрдХрд░рдг GitHub рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ - custom-рд╡рд╛рджрд╛2 . html ( рд╕реНрд░реЛрдд )ред

рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдЙрджрд╛рд╣рд░рдгред


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

рдПрдХ рдЙрдкрдпреЛрдЧреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛ Promise () рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ id рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдкреНрд░рдпреЛрдЬреНрдп рдХреЗ рд╕рд╛рде IndexedDB)рдЬреЗрдХ рдЖрд░реНрдЪреАрдмрд╛рд▓реНрдбред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдкрдХреЛ рдкреБрд░рд╛рдиреЗ рд╡рд╛рджреЗ рдореЗрдВ рд▓рд┐рдЦреЗ рд╡рд╛рджреЗ рдХреЗ рд╕рд╛рде рдЗрдВрдбреЗрдХреНрд╕рдбреАрдбреАрдмреА рдПрдкреАрдЖрдИ (рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЙрд▓рдмреИрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдореБрдЦреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдЙрдиреНрд╣реАрдВ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдордиреЗ рдКрдкрд░ рдЬрд╛рдВрдЪ рдХреА рдереАред рдирд┐рдореНрди рдХреЛрдб рдореВрд▓ Index рдореЙрдбрд▓ рдХреЛ рдХрдИ IndexedDB рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХреЗ рдЕрдиреБрд░реВрдк рдореЙрдбрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ:

function promisifyRequest(request){
    return new Promise(function(resolve, reject){
        request.onsuccess = function(){
            resolve(request.result)
        }

        request.onerror = function(){
            reject(request.error)
        }
    })
}

рдпрд╣ рдЙрдЪрд┐рдд рд░реВрдк рдореЗрдВ рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:

  • рдЬрдм рдЕрдиреБрд░реЛрдз рд╕рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рддреЛ рдЕрд╕рдлрд▓ рд╣реИрдВрдбрд▓рд░ рдЕрдиреБрд░реЛрдз рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рд╡рд╛рджрд╛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред
  • рдЬрдм рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рддреЛ рдСрдирд░реЛрд░ рд╣реИрдВрдбрд▓рд░ рдЕрдиреБрд░реЛрдз рдХреА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд╛рджреЗ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


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

рд╡рд╛рджреЗ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдПрдХ рдЕрдкрд╡рд╛рдж рдУрдкреЗрд░рд╛ рдорд┐рдиреА рдФрд░ IE11 рдФрд░ рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВред

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

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

рдпрд╣ рднреА рджреЗрдЦреЗрдВ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдо рдЧрд▓рддрд┐рдпрд╛рдБ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ ред "

рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

All Articles