Показать сообщение отдельно
  #1748 (permalink)  
Старый 20.01.2016, 11:03
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
1 Объем кода такой же +/-
Допустим, нам надо описать алгоритм регистрации юзера, где необходимо запросить логин, язык, пароль и эмэйл, а затем еще и сохранить данные в ДБ. Логин должен быть уникальным, так что если клиент пришлет уже занятый, надо его об этом оповестить и запросить другой. Если опять пришлет занятый, повторить, и так по кругу.
const loginsTaken = new Set();

class User {
    async register() {
        let login = await this.request("login");
        
        if (loginsTaken.has(login)) {
            do {
                this.send("login is taken already");
                login = await this.request("login");
            } while (loginsTaken.has(login));
        }

        loginsTaken.set(login);
        
        let language = await this.request("language");
        let password = await this.request("password");
        let email = await this.request("email");

        Object.assign(this, {language, login, password, email});

        await this.save();

        this.send("registered successfully");
    }
}


Перепишешь на чистые обещания?

Последний раз редактировалось Erolast, 20.01.2016 в 11:09.
Ответить с цитированием