example typescript angular promise observable

typescript - example - promise angular 6



Angular 2: Convertir observable en promesa (4)

La forma correcta de hacer que Observable sea una promesa, en su caso sería seguir

getAssetTypesPromise() Observable<any> { return new Promise((resolve, reject) => { this.getAssetTypes().subscribe((response: any) => { resolve(response); }, reject); }); }

P) ¿Cómo convierto lo siguiente observable en una promesa para poder llamarlo con .then(...) ?

Mi método que quiero convertir en una promesa:

this._APIService.getAssetTypes().subscribe( assettypes => { this._LocalStorageService.setAssetTypes(assettypes); }, err => { this._LogService.error(JSON.stringify(err)) }, () => {} );

El método de servicio que llama:

getAssetTypes() { var method = "assettype"; var url = this.apiBaseUrl + method; return this._http.get(url, {}) .map(res => <AssetType[]>res.json()) .map((assettypes) => { assettypes.forEach((assettypes) => { // do anything here you might need.... }); return assettypes; }); }

¡Gracias!


Observable se puede convertir para prometer así:

let promise=observable.toPromise();


realmente no necesitas hacer esto solo hazlo

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 una promesa y luego ()


rxjs6

https://github.com/ReactiveX/rxjs/issues/2868#issuecomment-360633707

No la 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)); });