De : Quelle est la différence entre les promesses et les observables ?

une Promesse est toujours asynchrone, tandis qu'un Observable peut être synchrone ou asynchrone

Cela signifie que nous pouvons écrire le code d'une manière particulière qui peut faire en sorte que les Observables se comportent de manière synchrone parfois et de manière asynchrone d'autres fois.

Quel est le comportement par défaut d'un Observable ? Est-ce synchrone ou asynchrone ?

Quelle serait la manière d'écrire une fonctionnalité telle que parfois les Observables se comportent de manière asynchrone et parfois synchrone ?

3
Aquarius_Girl 4 oct. 2020 à 08:28

1 réponse

Meilleure réponse

Cela dépend vraiment de la façon dont l'Observable est appelé.

  1. Si l'appel sous-jacent est synchrone, observable se comportera de manière synchrone.
const { Observable } = rxjs;

const helloWorld$ = new Observable(observer => {
  observer.next('Hello World');
  observer.complete();
});

console.log('Before subscribing helloWorld$');

helloWorld$.subscribe({
  next: console.log,
  complete: () => console.log('helloWorld$ on complete')
});

console.log('After subscribing helloWorld$');
<script src="//cdnjs.cloudflare.com/ajax/libs/rxjs/6.6.3/rxjs.umd.min.js">
</script>
  1. Si l'appel sous-jacent est asynchrone, observable se comportera de manière asynchrone.
const { Observable } = rxjs;

const helloEarth$ = new Observable(observer => {
  // mocking an ajax call
  setTimeout(() => {
    observer.next('Hello Earth from a galaxy far, far away...');
    observer.complete();
  }, 1000);
});

console.log('Before subscribing helloEarth$');

helloEarth$.subscribe({
  next: console.log,
  complete: () => console.log('helloEarth$ on complete')
});

console.log('After subscribing helloEarth$');
<script src="//cdnjs.cloudflare.com/ajax/libs/rxjs/6.6.3/rxjs.umd.min.js">
</script>
5
naveen 5 oct. 2020 à 07:49