Nuestros mejores programadores han agotado sus depósitos de café, en su búsqueda diariamente por la solución, hasta que Lucía halló la solución en Gogs y hoy la compartimos aquí.
Solución:
rxjs7
lastValueFrom(of('foo'));
https://indepth.dev/posts/1287/rxjs-heads-up-topromise-is- being-deprecated
rxjs6
https://github.com/ReactiveX/rxjs/issues/2868#issuecomment-360633707
No pipa. Está en el objeto Observable por defecto.
Observable.of('foo').toPromise(); // this
rxjs5
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/map';
...
this._APIService.getAssetTypes()
.map(assettypes =>
this._LocalStorageService.setAssetTypes(assettypes);
)
.toPromise()
.catch(err =>
this._LogService.error(JSON.stringify(err));
);
observable se puede convertir a promesa como esta:
let promise=observable.toPromise();
Realmente no necesitas hacer esto solo haz…
import 'rxjs/add/operator/first';
this.esQueryService.getDocuments$.first().subscribe(() =>
event.enableButtonsCallback();
,
(err: any) => console.error(err)
);
this.getDocuments(query, false);
first() garantiza que el bloque de suscripción solo se llame una vez (después de lo cual será como si nunca se hubiera suscrito), exactamente lo mismo que promete entonces()
Si para ti ha resultado provechoso nuestro artículo, te agradeceríamos que lo compartas con el resto programadores así nos ayudas a difundir nuestra información.