You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- fetch só irá disparar um erro caso aconteça um erro de rede e não seja possível realizar a requisição.
636
+
- O retorno da invocação da função fetch é uma Promise.
637
+
638
+
```json
639
+
{
640
+
"data": [1, 2, 3]
641
+
}
642
+
```
643
+
644
+
```javascript
645
+
// exibe no catch apenas erros de rede
646
+
// retorno do fetch é uma promise
647
+
fetch('/data.json')
648
+
.then(responseStream=> {
649
+
if (responseStream.status===200) {
650
+
returnresponseStream.json()
651
+
} else {
652
+
thrownewError('Request error')
653
+
}
654
+
})
655
+
.then(data=>console.log(data))
656
+
.catch(error=> {
657
+
console.log('Erro: ', error)
658
+
});
659
+
```
660
+
661
+
#### Async/Await
662
+
663
+
- Async: Uma forma de criar promises mais fácil
664
+
- Await: A palavra reservada await pode ser usada dentro de uma função criada utilizando a palavra async e para aguardar a resolução de uma promise.
665
+
666
+
```javascript
667
+
constsimpleFunc=async () => {
668
+
// throw new Error('Error')
669
+
return12345;
670
+
}
671
+
672
+
simpleFunc()
673
+
.then(data=> {
674
+
console.log(data)
675
+
})
676
+
.cathc(error=> {
677
+
console.log(error);
678
+
})
679
+
680
+
// promise para teste de await
681
+
constasyncTime= () =>
682
+
newPromise((resolve, reject) => {
683
+
setTimeout(function() {
684
+
resolve(123456);
685
+
}, 1000);
686
+
});
687
+
688
+
constsimpleAsyncTime=async () => {
689
+
constdata=awaitasyncTime();
690
+
return data;
691
+
}
692
+
693
+
// processamento assincrono como se fosse sincrono com o await
694
+
constsimpleAsyncFetch=async () => {
695
+
constdata=awaitasyncTime();
696
+
console.log(data);
697
+
698
+
constdataJson=awaitfetch('/data.json')
699
+
.then(responseStream=> {
700
+
if (responseStream.status===200) {
701
+
returnresponseStream.json()
702
+
} else {
703
+
thrownewError('Request error')
704
+
}
705
+
})
706
+
.then(data=>console.log(data))
707
+
.catch(error=> {
708
+
console.log('Erro: ', error)
709
+
});
710
+
return dataJson;
711
+
}
712
+
713
+
// usando promise.all, para executar em paralelo
714
+
constsimpleAsyncFetch=async () => {
715
+
constdata=awaitPromise.all([
716
+
asyncTime(),
717
+
fetch('/data.json')
718
+
.then(responseStream=> {
719
+
if (responseStream.status===200) {
720
+
returnresponseStream.json()
721
+
} else {
722
+
thrownewError('Request error')
723
+
}
724
+
})
725
+
.then(data=>console.log(data))
726
+
.catch(error=> {
727
+
console.log('Erro: ', error)
728
+
});
729
+
]);
730
+
731
+
return data;
732
+
}
733
+
```
517
734
518
735
### Aula III - Aplicando e praticando os conceitos
519
736
520
-
## Módulo V - Conceitos aplicados a qualidade de código e automação de testes em JS
737
+
### EventEmitter
738
+
739
+
- Programação assíncrona com o node
740
+
- A diferença entre o método on e once de uma instância EventEmitter é que um subscreve uma função a todas as ocorrências de um evento, o outro apenas para a primeira ocorrência.
741
+
742
+
```javascript
743
+
//node-script.js
744
+
// Instanciar ou extender o events
745
+
constEventEmitter=require('events');
521
746
522
-
### Aula I - Introdução e conceitos da aula
747
+
constemitter=newEventEmitter();
748
+
749
+
emitter.on('User logged', data=> {
750
+
console.log(data);
751
+
});
752
+
753
+
emitter.emit('User logged', { user:'Daniel' });
754
+
755
+
// execute
756
+
// server node node-script.js
757
+
```
758
+
759
+
```javascript
760
+
//node-script.js
761
+
constEventEmitter=require('events');
762
+
763
+
// class, extendendo e simplificando
764
+
classUsersextendsEventEmitter {
765
+
userLogged(data) {
766
+
this.emit('User logged', data);
767
+
}
768
+
}
769
+
770
+
constusers=newUsers();
771
+
772
+
users.on('User logged', data=> {
773
+
console.log(data);
774
+
});
775
+
776
+
users.userLogged({ user:'Daniel' });
777
+
778
+
// execute
779
+
// server node node-script.js
780
+
```
781
+
782
+
## Módulo V - Conceitos aplicados a qualidade de código e automação de testes em JS
0 commit comments