169 похожих чатов

Добрый день скажите есть два таких рабочих куска кода сервис login(username:

string, password: string, captcha: string): Promise<any> {
let params = {username, password, 'g-recaptcha-response': captcha};
if (captcha) {
params = {...params, 'g-recaptcha-response': captcha};
}

return this.httpBackend.handle(
new HttpRequest('POST', ${environment.api_url}/account/login/, params)
)
.toPromise()
.then((res: HttpResponse<any>) => this.enter(res.body));
}
и компанент где он используется
login(): void {
this.errors = Validation.ValidateLogin(this.username, this.password, this.countTries >= this.totalTries, this.captcha_token);
console.log(this.errors);
if (!isEmpty(this.errors)) {
return;
}

this.authService.login(this.username, this.password, this.captcha_token)
.then(
() => {
console.log('Успешно!');
this.notify.success('Успешно!', 'Добро пожаловать!');
this.loginUser(this.username);
},
(err) => {
console.log(err);
this.countTries++;
const error = err.error;
if (error.errors) {
console.log(error);
this.errors = error.errors;
}
if (!(error.message === 'Validation failed' || error.message === 'User is inactive')) {
console.log(error);
this.errors = error.errors;
this.errors.username = [];
}
}
);
}


а есть такой
export class AuthService {
private _registerUrl = "http://localhost:3000/api/register";
constructor(private http: HttpClient) { }

registerUser(user) {
return this.http.post<any😠this._registerUrl, user);
}
}

export class RegisterComponent implements OnInit {
registerUserData = {};
constructor(private _auth: AuthService) {}
ngOnInit() {
}

registerUser() {
this._auth.registerUser(this.registerUserData)
.subscribe(
res => console.log(res),
err => console.log(err)
);
}
}

в первом используется promice, а во втором subscribe можете мне объяснить в двух словах какая разница и что все таки лучше использовать?

1 ответов

3 просмотра

для начала ты в обоих случаях не предусматриваешь что жизнь компонента может быть кароче жизни запроса

Похожие вопросы

Обсуждают сегодня

Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
А чем вам питонисты не угодили?😂
.
79
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Всем привет. Поделитесь, пожалуйста, опытом. Есть форма, на которой имеется dbgrid и кнопки: добавить, редактировать, удалить. Если нет записей в dbgrid, то кнопки редактирова...
Евгений
5
type TExtensions<GExtender>=class function GetExtension<GEntityExtenderType>:GEntityExtenderType; end; function TExtensions<GExtender>.GetExtension<GEntityExtenderType...
zamtmn
8
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Всем привет, препод задал вопрос, подскажите пожалуйста, какой адрес инкапсулирует указатель?
Свинка Пеппа
7
Почему никто ещё не написал квантовую виртуальную машину на Windows?
КТ315
7
Вот смотрите у меня есть два стрима сейчас fs, cs: TStream; fs := TFileStream.Create('filename'); cs := TCompressionStream.Create(compression_level, fs); Я хочу сделать так: ...
notme
5
Карта сайта