0

Изучаю сайт Читай-город. Файл окна входа\регистрации имеет имя Читай-город - интернет-магазин книг_files\auth.js(1).Без названия и следующее содержание (отрывок со 160-й по 218-ю строчку)

//подпишемся на событие при успешно отвалидированном инпуте
    eventEmitter.subscribe(gValidator.events.input.valid, function (payload){
        if(payload.input){
            payload.input.parentElement.classList.remove('error');
        }
    var formData = authFormsData[payload.form.id];
    if(formData){
        gValidator.validate(formData);
    }
});

//подпишемся на событие при не прошедшем валидацию инпуте
eventEmitter.subscribe(gValidator.events.input.fail, function (payload){
    if(payload.input){
        payload.input.parentElement.classList.add('error');
    }

    var formData = authFormsData[payload.form.id];
    if(formData){
        gValidator.validate(formData);
    }
});

//подпишемся на событие при успешно отвалидированной формы
eventEmitter.subscribe(gValidator.events.form.valid, function (payload){
    if(payload.submitBtn){
        payload.submitBtn.classList.remove('disabled');
    }
});

//подпишемся на событие при не прошедшей валидацию формы
eventEmitter.subscribe(gValidator.events.form.fail, function (payload){
    if(payload.submitBtn){
        payload.submitBtn.classList.add('disabled');
    }
});

//подпишемся на событие успешного сброса пароля
eventEmitter.subscribe(auth.events.resetPassSuccess, function (){
    //Popup.hideAll();
    var resetPassMessage = Popup.getInstance('resetPassMessage', '.js__popup_reset_pass_message', getResetPassMessage());
    resetPassMessage.show();
});

eventEmitter.subscribe(auth.events.registrationSuccess, function (){
    if(window.version === 'd'){
        window.location.reload();
    } else if (window.version === 'm') {
        //Popup.hideAll();
        var popupGreeting = Popup.getInstance('greeting', '.js__popup_greeting');
        //покажем попап приветствия
        popupGreeting.show();

        eventEmitter.subscribe(popupGreeting.events.closePopup, function () {
            window.location.reload();
        });
    }
});</code></pre>

Из Подписка на событие следует, что eventEmitter.subscribe производит отписку обработчика от события, но такое ощущение, что наоборот - производится подписка. Проясните каким образом происходит работа оператора eventEmmitter.subscribe в приведенном файле и для чего нужна отписка, если такая производится.

  • subscribe это подписка – Евгений Платов Oct 24 '20 at 11:04
  • это библиотека rxjs для реактивного программирования - https://rxjs-dev.firebaseapp.com/guide/overview. По типу промисов в чистом JS - https://learn.javascript.ru/promise-basics – Михаил Камахин Oct 24 '20 at 11:05
  • Вы неверно меня поняли в прошлом вопросе. Читайте внимательно или немного на другие вещи акцент делайте, не знаю :) –  Oct 24 '20 at 11:08
  • subscribe это шаблон проектирования, rxjs это лишь частная реализация. Тут его нет – Евгений Платов Oct 24 '20 at 11:12

0 Answers0