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

рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ - рдЪреЗрддрд╛рд╡рдиреА (), рдкреБрд╖реНрдЯрд┐ () рдФрд░ рд╢реАрдШреНрд░ () (рдмрд╛рдж рдореЗрдВ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ)ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЕрд▓рдЧ рд╣реИрдВ рдФрд░ рджрд┐рдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рднрджреНрджреЗ рд╣реИрдВред
рдЖрдЦрд┐рд░ рдореЗрдВ рд╣рд╛рде рдкрд╣реБрдВрдЪ рдЧрдПред
рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ? рд╕рдВрд╡рд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдзрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреВрдЯрд╕реНрдЯреНрд░реИрдк) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ (рдХреНрд▓реЛрдЬ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)ред рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЗрдВ рдореЛрдбрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рдПрдХ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛, рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ ...
рдлрд┐рд░ рднреА, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреЗрдо рдбрд┐рдЬрд╛рдЗрди рдХреА рд╢реИрд▓реА рдХреЗ рдЕрдиреБрд░реВрдк рдорд╛рдирдХ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдореЗрдВ рдЕрд▓рд░реНрдЯ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдФрд░ рдЕрдиреНрдп рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕рд╣рд┐рдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!
рдЫрд╡рд┐
ECMAScript 6 (ES6) рдореЗрдВ рдкреНрд░реЙрдорд┐рд╕ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕рдВрднрд╡ рд╣реИ!
рдореИрдВрдиреЗ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдФрд░ рдХреЛрдб (рдЕрд▓рд░реНрдЯ), рдкреБрд╖реНрдЯрд┐ () рдФрд░ рд╢реАрдШреНрд░ () рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЖрдк рдХреЛрдб рдореЗрдВ рд╕рдм рдХреБрдЫ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХреНрдпрд╛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдбрд┐рдЬрд╛рдЗрди рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреБрд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдХреЛрдб рдореЗрдВ рдорд╛рд░реНрдХрдЕрдк рдирд╛рдореЛрдВ (рдЖрдИрдбреА) рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

рдЕрд▓рд░реНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


рддреЛ, рдЪрд▓реЛ рдорд╛рд░реНрдХрдЕрдк (рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдФрд░ рдлрд╝реЙрдиреНрдЯ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛) рдФрд░ рдЕрд▓рд░реНрдЯ рдХреЛрдб (рдореИрдВ jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ) рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реВрдВ:
    <div id="PromiseAlert" class="modal">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title"><i class="fas fa-exclamation-triangle text-warning"></i> <span>The app reports</span></h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">├Ч</span>
                    </button>
                </div>
                <div class="modal-body">
                    <p></p>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">OK</button>
                </div>
            </div>
        </div>
    </div>

    window.alert = (message) => {
        $('#PromiseAlert .modal-body p').html(message);
        var PromiseAlert = $('#PromiseAlert').modal({
            keyboard: false,
            backdrop: 'static'
        }).modal('show');
        return new Promise(function (resolve, reject) {
            PromiseAlert.on('hidden.bs.modal', resolve);
        });
    };

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛, рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо PromiseAlert рдФрд░ html рдорд╛рд░реНрдХрдЕрдк рдХрдХреНрд╖рд╛рдПрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдХреЛрдб рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рдЪреЗрддрд╛рд╡рдиреА рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рдп рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╡рд┐рдзрд┐ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ (рд╡реЗ рдЗрд╕реЗ рджреЗрд╢реА рдЕрд▓рд░реНрдЯ рдХреЗ рдХрд░реАрдм рдмрдирд╛рддреЗ рд╣реИрдВ)ред рдЬрд░реВрд░реА! рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдореЗрдВ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдиреАрдЪреЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрд▓рд░реНрдЯ рдкреНрд░реЙрдорд┐рд╕ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ, рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЗрд╕ рдкреНрд░реЛрдорд┐рд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдЕрд▓рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
    $('p a[href="#"]').on('click', async (e) => {
        e.preventDefault();
        await alert('Promise based alert sample');
    });

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

рд╣рдо рдкреБрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


рдЖрдЧреЗ рдЪрд▓рддреЗ рд╣реИрдВред рдПрдХ рд╢рдХ рдХреЗ рдмрд┐рдирд╛, рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдХреЗрд╡рд▓ async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдмрдВрдзрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реЗ рдХреЛрдб рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рднреА рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рддреЛ рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ:
    <div id="PromiseConfirm" class="modal">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title"><i class="fas fa-check-circle text-success"></i> <span>Confirm app request</span></h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">├Ч</span>
                    </button>
                </div>
                <div class="modal-body">
                    <p></p>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-success" data-dismiss="modal">OK</button>
                    <button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
                </div>
            </div>
        </div>
    </div>

    window.confirm = (message) => {
        $('#PromiseConfirm .modal-body p').html(message);
        var PromiseConfirm = $('#PromiseConfirm').modal({
            keyboard: false,
            backdrop: 'static'
        }).modal('show');
        let confirm = false;
        $('#PromiseConfirm .btn-success').on('click', e => {
            confirm = true;
        });
        return new Promise(function (resolve, reject) {
            PromiseConfirm.on('hidden.bs.modal', (e) => {
                resolve(confirm);
            });
        });
    };

рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрддрд░ рд╣реИ - рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХреНрд▓реЛрдЬрд░ рдореЗрдВ рдПрдХ рдЕрдиреНрдп рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВред рдпрджрд┐ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪрд░ рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдорд╛рди рдЧрд▓рдд рд╣реИред рдареАрдХ рд╣реИ, рдЬрдм рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕ рдЪрд░ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧ (async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ) рд╣реИ:
    $('p a[href="#"]').on('click', async (e) => {
        e.preventDefault();
        if (await confirm('Want to test the Prompt?')) {
            let prmpt = await prompt('Entered value:');
            if (prmpt) await alert(`entered: ┬л${prmpt}┬╗`);
            else await alert('Do not enter a value');
        }
        else await alert('Promise based alert sample');
    });

рдЪрд▓ рд░рд╣рд╛ рд╣реИ - рд╢реАрдШреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг


рдКрдкрд░ рджрд┐рдП рдЧрдП рддрд░реНрдХ рдХреЛ рднреА рдкрд░реАрдХреНрд╖рдг рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдФрд░ рддрд░реНрдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:
    <div id="PromisePrompt" class="modal">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title"><i class="fas fa-question-circle text-primary"></i> <span>Prompt request</span></h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">├Ч</span>
                    </button>
                </div>
                <div class="modal-body">
                    <div class="form-group">
                        <label for="PromisePromptInput"></label>
                        <input type="text" class="form-control" id="PromisePromptInput">
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-success" data-dismiss="modal">OK</button>
                    <button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
                </div>
            </div>
        </div>
    </div>

    window.prompt = (message) => {
        $('#PromisePrompt .modal-body label').html(message);
        var PromisePrompt = $('#PromisePrompt').modal({
            keyboard: false,
            backdrop: 'static'
        }).modal('show');
        $('#PromisePromptInput').focus();
        let prmpt = null;
        $('#PromisePrompt .btn-success').on('click', e => {
            prmpt = $('#PromisePrompt .modal-body input').val();
        });
        return new Promise(function (resolve, reject) {
            PromisePrompt.on('hidden.bs.modal', (e) => {
                resolve(prmpt);
            });
        });
    };

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

рдПрдбреНрд╕


рд╡реЗ рд╕реАрдзреЗ рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкреВрд░реНрдг рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдореЗрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдереАрдо рд╢рд╛рдорд┐рд▓ рд╣реИред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдореБрдлреНрдд рдереАрдо рд▓реА ред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред рддреАрди рдореЛрдб рд╣реИрдВ - рд╕реНрд╡рдЪрд╛рд▓рд┐рдд (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рд░реВрд╕реА рдпрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА (рдордЬрдмреВрд░)ред рдорд╢реАрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред
рдХреБрдХреАрдЬрд╝ ( рдпрд╣рд╛рдБ рд╕реЗ ) рдореИрдВ рд╡рд┐рд╖рдп рдФрд░ рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдЪ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рдерд╛ред
рдереАрдореНрд╕ рдмрд╕ рдКрдкрд░ рд╕рд╛рдЗрдЯ рд╕реЗ href рд╕реАрдПрд╕рдПрд╕ рдЦрдВрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╕реНрд╡рд┐рдЪ:
    $('#themes a.dropdown-item').on('click', (e) => {
        e.preventDefault();
        $('#themes a.dropdown-item').removeClass('active');
        e.currentTarget.classList.add('active');
        var cur = e.currentTarget.getAttribute('href');
        document.head.children[4].href = 'https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/' + cur + 'bootstrap.min.css';
        var ed = new Date();
        ed.setFullYear(ed.getFullYear() + 1);
        setCookie('WebApplicationPromiseAlertTheme', cur, ed);
    });

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рдмреВрдЯ рдкрд░ рд░рд┐рдХрд╡рд░реА рдХреЗ рд▓рд┐рдП:
    var cookie = getCookie('WebApplicationPromiseAlertTheme');
    if (cookie) {
        $('#themes a.dropdown-item').removeClass('active');
        $('#themes a.dropdown-item[href="' + cookie + '"]').addClass('active');
        document.head.children[4].href = 'https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/' + cookie + 'bootstrap.min.css';
    }

рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрдерд╛рдиреАрдпрдХрд░рдгред Json рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдЪрд╛рдмрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдФрд░ рд░реВрд╕реА рдореЗрдВ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдорд╛рд░реНрдХрдЕрдк рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ), рдореИрдВ рдХреЗрд╡рд▓ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╕рдордп рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдиреЛрдбреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ рдореВрд▓реНрдп рд╕реЗ рдПрдХ рдХреБрдВрдЬреА рдХреА рдЬрдЧрд╣ред
    var translate = () => {
        $('#cultures .dropdown-toggle samp').text({ ru: '  ', en: ' English ' }[culture]);
        if (culture == 'ru') {
            let int;
            if (localization) {
                for (let el of document.all)
                    if (el.childElementCount == 0 && el.textContent) {
                        let text = localization[el.textContent];
                        if (text) el.textContent = text;
                    }
            }
            else int = setInterval(() => {
                if (localization) {
                    translate();
                    clearInterval(int);
                }
            }, 100);
        }
        else location.reload();
    };
    if (culture == 'ru') translate();

рдЗрд╕рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди (рд╕рд░реНрд╡рд░ рдкрд░ рдмреЗрд╣рддрд░) рдХрд░рдирд╛ рд╢рд╛рдпрдж рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рдм рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рд░реВрд╕реА рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реВрдВ - рдореИрдВ рд╕рд┐рд░реНрдл рдореВрд▓ рдорд╛рд░реНрдХрдЕрдк (рд▓реЛрдХреЗрд╢рди) рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВред
рдЙрддреНрддрд░рд╛рд░реНрджреНрдз, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдореНрдореАрдж рдХреА рдЧрдИ рдереА, рдСрдирдмреАрдлреНрд░реЛрдВрд▓реЛрдб рдореЗрдВ рд╕рдВрджреЗрд╢ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реА рдкреБрд╖реНрдЯрд┐ рдЗрд╕ рдкрд░ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдбрд╛рд▓рддреА рд╣реИред рдХреЛрдб рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢ рдХрд╛ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╕рдВрд╕реНрдХрд░рдг рд╣реИ - рдЖрдк рдЗрд╕реЗ рддрдм рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
    //window.onbeforeunload = function (e) {
    //    e.returnValue = 'Do you really want to finish the job?';
    //    return e.returnValue;
    //};

All Articles