Soy nuevo en Angular (solo estoy aprendiendo) y estoy tratando de entender el siguiente código. En este código (lo simplifiqué de otra aplicación que he visto en Github), el método de subscribe llama al método de add con el parámetro resolve (de Promise), así que tengo algunas preguntas:
resolve pasado? Pensé que el parámetro debe ser del tipo Suscripción y el marco llama a <Subscription>.unsubscribe() en él. const numbers: Observable<number> = interval(5000); const takeFourNumbers = numbers.pipe(take(4)); const promise$ = new Promise<void>(resolve => { // attempt to refresh token on app start up to auto authenticate takeFourNumbers.subscribe() .add(resolve); }).then((result) => { console.log("My result is ", result); });Es un código un poco extraño.
Cada Subscription tiene una función .add( , que se usa para desencadenar algo más en el desmontaje, aquí es cuando finaliza esa suscripción (ya sea porque la transmisión falla, se completa o usted llama a .unsubscribe())
El parámetro que toma .add( puede ser una función (en cuyo caso solo se llama al desmontaje), u otra suscripción, en cuyo caso llamará a .unsubscribe() .
Realmente no se usa demasiado a menos que esté construyendo algo de bajo nivel (como una biblioteca)
En este caso, takeFourNumbers es un flujo que emitirá 4 números en sucesión, 1 segundo entre cada emisión y luego completa. promise$ es una Promesa que cuando takeForNumbers finaliza después de 4 segundos se resolverá con void , porque el desmontaje llamará a la función pasada a .add( , que es resolve, y no da ningún parámetro hasta donde yo sé.
Luego, en esa promesa, llama a .then( para registrar el resultado cuando eso sucede, pero espero que el resultado sea undefined .