Я впервые пишу здесь, поэтому сначала прошу прощения, если я делаю что-то не так.
Я такой новичок в Angular и я никогда не использовал синхронизм, поэтому, пожалуйста, сделайте это как можно проще насколько возможно.
У меня есть эта функция в моем сервисе:
validateDDBB(userName, teamName, email: string) {
let requestUrl: string = '/api/tenniship/validator/user?userName=' + userName + '&teamName=' + teamName + '&email=' + email;
const config = { headers: new HttpHeaders().set('Content-Type', 'application/json') };
return this.http.get<Array<boolean>>(requestUrl, config);
}
Я хочу ее для формы регистрации. Я хочу знать, если электронная почта, имя пользователя и имя команды уже зарегистрированы в моей базе данных. Эта функция отправляет мне логический массив размера = 3, который указывает, являются ли они уже или нет.
Проблема в том, что выполняющийся код не ожидает ответа, поэтому полученные результаты используют данные мусора.
Функция моего компонента:
databaseValidator(){
this.loginService.validateDDBB(this.username, this.teamName, this.email).subscribe(
res => {
this.usedUsername = res[0].valueOf();
this.usedTeamName = res[1].valueOf();
this.usedEmail = res[2].valueOf();
console.log("Data base info pulled: " + res);
return true;
},
error => {
console.error("Something went wrong: undefined: " + error);
return false;
}
);
}
Как я могу изменить свой код, например, когда я это сделаю, мой код будет ждать ответа, чтобы я не использовал данные мусора?
onSubmit(){
this.databaseValidator();
//usedUsername, usedTeamName and usedMail are primitive boolean variables.
console.log("Username: " + this.usedUsername);
console.log("Team: " + this.usedTeamName);
console.log("email: " + this.usedEmail);
}
Спасибо большое!