рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрд╕рд┐рдВрдХреНрд╕ / рд╡реЗрдЯ

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

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

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

Async / рдмреЗрд╕рд┐рдХреНрд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ


Async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рджреЛ рднрд╛рдЧ рд╣реИрдВред

Async рдХреАрд╡рд░реНрдб


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

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рдореНрди рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

function hello(){ return 'Hello' }
hello()

рд╕рдорд╛рд░реЛрд╣ 'рд╣реИрд▓реЛ' рд▓реМрдЯрд╛рдПрдЧрд╛ред рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛?

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓ рджреЗрдВ? рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдЬрд╝рдорд╛рдПрдБ:

async function hello(){ return 'Hello' }
hello()

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

рдЖрдк рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:

let hello = async function(){ return hello() }
hello()

рдЖрдк рддреАрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

let hello = async () => { return 'Hello' }

рдпреЗ рд╕рднреА рдХрд╛рд░реНрдп рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред

рдкреВрд░реНрдг рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХрд╛ рдореВрд▓реНрдп рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо .then () рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

hello().then((value) => console.log(value))

... рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐:

hello().then(console.log)

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

рдХреАрд╡рд░реНрдб рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИ


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

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

рдпрд╣рд╛рдБ рдПрдХ рддреБрдЪреНрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

async function hello(){
    return greeting = await Promise.resolve('Hello')
}

hello().then(alert)

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

Async / wait рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рджреЛрдВ рдкрд░ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

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)
})

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

async function myFetch(){
    let response = await fetch('coffee.jpg')
    let myBlob = await response.blob()

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

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

рдпрд╣ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ - рдирд╣реАрдВред рддрдм () рдмреНрд▓реЙрдХ!

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

async function myFetch(){
    let response = await fetch('coffee.jpg')
    return await response.blob()
}

myFetch().then((blob) => {
    let objectURL = URL.createObjectURL(blob)
    let image = document.createElement('image')
    image.src = objectURL
    document.body.appendChild(image)
}).catch(e => console.log(e))

рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдорд╛рд░реА рд▓рд╛рдЗрд╡ рдбреЗрдореЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ ( рд╕реНрд░реЛрдд рдХреЛрдб рднреА рджреЗрдЦреЗрдВ )ред

рд▓реЗрдХрд┐рди рдпреЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


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

рдПрдХ рдмрд╛рд░ рдлрд┐рд░: рдЗрдВрддрдЬрд╛рд░ рдХреЗрд╡рд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

let response = await fetch('coffee.jpg')

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

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

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

рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ


рдпрджрд┐ рдЖрдк рдПрд░рд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдЖрдк рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрд╢рд┐рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрдХрдбрд╝реЗрдВред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

async function myFetch(){
    try{
        let response = await fetch('coffee.jpg')
        let myBlob = await response.blob()

        let objectURL = URL.createObjectURL(myBlob)
        let image = document.createElement('img')
        image.src = objectURL
        document.body.appendChild(image)
    } catch(e){
        console.log(e)
    }
}

myFetch()

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

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

async function myFetch(){
    let response = await fecth('coffee.jpg')
    return await response.blob()
}

myFetch().then((blob) => {
    let objectURL = URL.createObjectURL
    let image = document.createElement('img')
    image.src = objectURL
    document.body.appendChild(image)
}).catch(e => console.log(e))

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

рдЖрдк GitHub рдкрд░ рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕рд░рд▓-рдлрд╝реЗрдЪ-async-рдЗрдВрддрдЬрд╛рд░-рдХреЛрд╢рд┐рд╢ catch.html (рджреЗрдЦреЗрдВ рд╕реНрд░реЛрдд )

рд╕рд░рд▓-рдлрд╝реЗрдЪ-async-рдЗрдВрддрдЬрд╛рд░ рд╡рд╛рджрд╛-catch.html (рджреЗрдЦреЗрдВ рд╕реНрд░реЛрдд )

Promise.all рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ ()


Async / wait рд╡рд╛рджреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдмрд╛рдж рдХрд╛ рдкреВрд░рд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Promise.all () рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ Promise.all () рдХреЛ рд╕рднреА рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╕реЗ, рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВ ред рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдЯреИрдм рдЦреБрд▓рд╛ рд░рдЦреЗрдВред

Async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде ( рд▓рд╛рдЗрд╡ рдбреЗрдореЛ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦреЗрдВ ) рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

async function fetchAndDecode(url, type){
    let repsonse = await fetch(url)

    let content

    if(type === 'blob'){
        content = await response.blob()
    } else if(type === 'text'){
        content = await response.text()
    }

    return content
}

async function displayContent(){
    let coffee = fetchAndDecode('coffee.jpg', 'blob')
    let tea = fetchAndDecode('tea.jpg', 'blob')
    let description = fetchAndDecode('description.txt', 'text')

    let values = await Promise.all([coffee, tea, description])

    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)
}

displayContent()
.catch(e => console.log(e))

рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ fetchAndDecode () рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рдЪреБрдХреЗ рд╣реИрдВред рд▓рд╛рдЗрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:

let values = await Promise.all([coffee, tea, description])

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

рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЕрдкрдиреЗ рдХреЙрд▓ рдореЗрдВ рдПрдХ .catch () рдмреНрд▓реЙрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ (); рдпрд╣ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред

рдпрд╛рдж рд░рдЦреЗрдВ: рдЖрдк рдСрдкрд░реЗрд╢рди рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .finally () рдмреНрд▓реЙрдХ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЖрдк рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд╛рдЗрд╡ рдбреЗрдореЛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ( рд╕реНрд░реЛрдд рдХреЛрдб рднреА рджреЗрдЦреЗрдВ )ред

Async / рд╡реЗрдЯ рдиреБрдХрд╕рд╛рди


Async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдХреБрдЫ рдЦрд╛рдорд┐рдпрд╛рдБ рд╣реИрдВред

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

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

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

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рджреЛ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ: slow-async-wait.html ( рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦреЗрдВ ) рдФрд░ fast-async-wait.html ( рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦреЗрдВ )ред рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╡рд╛рджрд╛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ:

function timeoutPromise(interval){
    return new Promise((resolve, reject) => {
        setTimeout(function(){
            resolve('done')
        }, interval)
    })
}

рдлрд┐рд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдлрд╝рдВрдХреНрд╢рди рдЯрд╛рдЗрдордЯреЗрд╕реНрдЯ () рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЯрд╛рдЗрдордЖрдЙрдЯрдкреНрд░реЛрдорд╛рдЗрдЬ () рдореЗрдВ рддреАрди рдХреЙрд▓ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ:

async function timeTest(){
    ...
}

рдЯрд╛рдЗрдордЯреЗрд╕реНрдЯ () рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рддреАрди рдХреЙрд▓ рдЙрд╕ рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдкреВрд░реЗ рдСрдкрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

let startTime = Date.now()
timeTest().then(() => {
    let finishTime = Date.now()
    let timeTaken = finishTime - startTime
    alert('Time taken in milliseconds: ' + timeTaken)
})

рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯрд╛рдЗрдордЯреЗрд╕реНрдЯ () рдлрд╝рдВрдХреНрд╢рди рдЕрд▓рдЧ рд╣реИред

рдзреАрдореА рдЧрддрд┐ рд╕реЗ async-wait.html timeTest () рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

async function timeTest(){
    await timeoutPromise(3000)
    await timeoutPromise(3000)
    await timeoutPromise(3000)
}

рдпрд╣рд╛рдВ рд╣рдо рдХреЗрд╡рд▓ рддреАрди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЙрд▓ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ 3 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ - рдпрджрд┐ рдЖрдк рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ 9 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

рдлрд╛рд╕реНрдЯ-рдРрдХреНрд╕рд┐рди-рд╡реЗрдЗрдЯ рдореЗрдВред html рдЯрд╛рдЗрдордЯреЗрд╕реНрдЯ () рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

async function timeTest(){
    const timeoutPromise1 = timeoutPromise(3000)
    const timeoutPromise2 = timeoutPromise(3000)
    const timeoutPromise3 = timeoutPromise(3000)

    await timeoutPromise1
    await timeoutPromise2
    await timeoutPromise3
}

рдпрд╣рд╛рдБ рд╣рдо рддреАрди рдкреНрд░реЛрдорд┐рд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рд╕реЗрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЗрд╕рд╕реЗ рдЬреБрдбрд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдПрдХ рд╕рд╛рде рдЪрд▓рддреА рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ - рдЬреИрд╕реЗ рдХрд┐ рд╡рд╛рджреЗ рдПрдХ рд╕рд╛рде рдкреВрд░реЗ рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ, рд╡рд╛рджреЗ рднреА рдЙрд╕реА рд╕рдордп рдкреВрд░реЗ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ; рдЬрдм рдЖрдк рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ 3 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА!

рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


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

class Person{
    constructor(first, last, age, gender, interests){
        this.name = {
            first,
            last
        }
        this.age = age
        this.gender = gender
        this.interests = interests
    }

    async greeting(){
        return await Promise.resolve(`Hi! I'm ${this.name.first}`)
    }

    farewell(){
        console.log(`${this.name.first} has left the building. Bye for now!`)
    }
}

let han = new Person('Han', 'Solo', 25, 'male', ['Smuggling'])

рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

han.greeting().then(console.log)

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди


Async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдмрд╛рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдХрдореА рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд▓рдЧрднрдЧ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╕рд╛рде рд╣реА рд╡рд╛рджреЗ рднреА; рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдФрд░ рдУрдкреЗрд░рд╛ рдорд┐рдиреА рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдореМрдЬреВрдж рд╣реИрдВред

рдпрджрд┐ рдЖрдк async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк BabelJS рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдЖрдкрдХреЛ рдирд╡реАрдирддрдо JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред

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


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

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

рд╣реИрдкреНрдкреА рдХреЛрдбрд┐рдВрдЧ!

All Articles