I am using angular 6. One of the http calls returns a ZoneAwarePromise
when I try to convert the Observable
into a Promise
. Also the then block is not getting called.
const login = this.authService.login(email, password).toPromise()
login.then(() => {\* not getting called*\})
Can someone explain what is a ZoneAwarePromise
?
Angular relies heavily on zone.js to persist an execution context across asynchronous tasks. It's wrapped up in an injectable service called NgZone
.
These Zones wrap up common JS objects meant to run async tasks, which include Promises. This is maintained in a Zone
as a Task, MicroTask, etc.
A ZoneAwarePromise
is still functionally identical to a normal Promise, but internally stays aware of a Zone
's execution context, and the Zone
can know when that Promise completes.
In Angular, this execution context almost always means running change detection.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With