Olá professores, estou buscando entender melhor o código dessa aula que está muito confuso.
Vamos ao que eu quero destrinchar linha por linha:
checkUserNameTaken() {
return (control: AbstractControl) => {
return control
.valueChanges
.pipe(debounceTime(300))
.pipe(switchMap(userName =>
this.signUpService.checkUserNameTaken(userName)
))
.pipe(map(isTaken => isTaken ? { userNameTaken: true } : null))
.pipe(first());
}
}
Não entendi esse Abstract Control. O debounceTime é talvez uma das poucas coisas que ficaram 100% claras no código.
Não entendi sobretudo a parte da explicação:
"Utilizamos o switchMap() pois primeiro pegamos a emissão do Observable, após o qual temos que retornar a emissão do Observable de checkUserNameTaken(). Para não obtermos as duas emissões concomitantemente, exigiremos que o fluxo anterior seja pausado e trocado para o fluxo de verificação do username. Este processo é repetido toda vez que é feita uma nova digitação no campo de input."
E qual é a diferença do map
pro switchMap
? Ambos não alteraram o fluxo do código? Desculpe se pareci muito ignorante.