JavaScript, primeiro aprender funções! Callback, sem entender o conceito
Tags: javascript, callback, braziliandevs
Published: 2021-05-31 18:39:40

Um relato pessoal. 
Não sou professor de programação. Nem mesmo sei muito de programação, ainda mais em JS. 

Mas para eu conseguir entender o assincronismo do JS eu tive que bolar estratégias kkk 

Primeiro, cheguei ao callback de um jeito que não me ajudou. 
Não é culpa de nenhum professor ou tutorial. 

Eu daria uma dica para quem vai dar curso, ou fazer tutorial.
'Isso é voltado a iniciantes, quem não conhece nada de programação. Mas pode ser que ajude a quem já conhece!'
 

Exemplo tosco: 

Você ensinou isso: 

```javascript 
function somar(num1, num2){
return num1 + num2
}
```

Fez o aluno repetir com alguns exemplos.  

``` 
Na verdade na minha visão, depois de ensinar variáveis. 
A próxima deve ser funções! 
Você já usa funções para todo o resto. 
Laços, Ifs, e todo o resto. 

```

Voltando... 

Sugiro dizer algo assim: agora vamos pegar o resultado AINDA dentro da função e por em outra 

```javascript 
function func(num){
  console.log(num)
}

function somar(num1, num2){
const result = num1 + num2

func(result) 
}
```
Eu demorei um tempo para pegar algo simples 
Uma função dentro de outra... 
É a coisa mais simples do mundo. Mas eu demorei pra ver isso, onde eu aprendi...

Quem esta aprendendo sabe que pode chamar uma função dentro de outra e isso é magico... 

Vamos para a próxima parte! 
Chamar 2 funções dentro de outra, mas, com IFs
 

```javascript 
function func(num){
  console.log('num maior que 5',num)
}

function func2(num){
  console.log('num menor que 5',num)
}


function somar(num1, num2){
  
const result = num1 + num2

if(result > 5){
  
  func(result);
}else{
  
  func2(result);
}
  
  
}

```
Não é lindo? 

Depois disso, você ensina que da pra chamar nos parâmetros 
funções. 
Algo simples. Que penso eu deveria ser ensinado mais cedo. 


```javascript 
function func(num){
  console.log('num maior que 5',num)
}

function funcao(num){
  console.log('num menor que 5',num)
}


function somar(num1, num2, func, func2){
  
const result = num1 + num2

if(result >5){
  
  func(result);
}else{
  
  func2(result);
}
  
  
}


somar(2,1, func, funcao)
```
Você não precisa explicar agora o porque acontece, só que acontece. 

A pessoa sabe que pode chamar funções nos parâmetros. 
Faça ela fazer N exercitórios com funções sendo chamadas nos parâmetros. 

Ela já sabe criar uma função, sabe chamar funções dentro de outras funções, sabe chamar funções via parâmetros. 
E sabe isso bem! 


Chegou a hora de aprender a criar uma função no parâmetro. 

```javascript
function func(num){
  console.log('num maior que 5',num)
}




function somar(num1, num2, func, func2){
  
const result = num1 + num2

if(result >5){
  
  func(result);
}else{
  
  func2(result);
}
  
  
}

 somar(2,1, func, function(num){
   console.log('num menor que 5',num)
 })
```
Isso esta sendo fácil de entender. Na minha visão! 
Eu não fui ensinado dessa forma. 


Primeiro aprendemos que se pode criar uma função diretamente no parâmetro. Depois aprenderemos que podemos criar quantas quisermos. Mas, só vou mostrar com dois parâmetros! 

```javascript

function somar(num1, num2, func, func2){
  
const result = num1 + num2

if(result > 5){
  
  func(result);

}else{
  
  func2(result);
}
  
}


somar(2,5, function(num){
  console.log('num maior que 5',num)
}, function(num){
  console.log('num menor que 5',num)
})
```

Quem esta aprendendo não precisa saber o nome do que aprendeu. A pessoa em que saber que pode usar o JS desa forma. E isso é mais importante!


Acho que é assim que eu ensinaria! Com base nisso, eu aprenderia melhor JS e mais facilmente! 
Teremos mais posts sobre JS e assincronismo em breve. 
Quero seguir esta linha: 
Callbacks, promise e async await