El enlace de datos angular no funcionará con async / wait, pero sí con promesas
Los enlaces de datos no se actualizan si sus valores cambian después de unawait
declaración.
handle() {
this.message = 'Works'
}
async handle() {
this.message = 'Works'
}
async handle() {
await new Promise((resolve, reject) => {
resolve()
})
this.message = 'Works'
}
async handle() {
await new Promise((resolve, reject) => {
setTimeout(() => resolve(), 3000)
})
this.message = 'Doesn\'t work'
}
handle() {
new Promise((resolve, reject) => {
setTimeout(() => resolve(), 3000)
})
.then(() => this.message = 'Works')
}
¿Por qué los dos últimos no se comportan igual? ¿No se supone que son lo mismo?
Iónico: 3.9.2
Angular: 5.0.3
TypeScript: 2.4.2
EDITAR: Me encontré con otro problema con esto que puede ser útil para algunos.
¡Cambiar los valores de un enlace en el constructor se comporta de manera diferente a ionViewDidLoad o ngOnInit!
constructor(private zone: NgZone) {
// This will cause the same problems, bindings not updating
this.handle()
}
constructor(private zone: NgZone) {
// Unless you do this...
this.zone.run(() => {
this.handle()
})
}
ionViewDidLoad() {
// But I think this is better/cleaner
this.handle()
}