J'ai une méthode sur un service qui récupère l'heure du serveur et je prévois de l'utiliser dans un tube personnalisé. Le but du tube est de comparer l'horodatage à l'heure actuelle et de le renvoyer dans un format lisible par l'homme.Appels asynchrones dans Angular 4 Pipes
service
export class TimeService{
currentServerTime;
fetchCurrentTimeStamp(){
//http request using Observable
return sendGETRequest(.....).map(data => {
this.currentServerTime = data;
return this.currentServerTime;
})
}
}
pipe
export class GetTimeFromNowPipe implements PipeTransform{
fromNow;
currentServerTime: number;
constructor(private timeService: TimeService, private appSettings: AppSettings){}
transform(value: number){
var currentTime;
this.timeService.fetchCurrentTimestamp().subscribe(data => {
currentTime = data
if(!value) return "";
if(value){
let newDate = moment.unix(value);
this.fromNow = newDate.from(moment.unix(currentTime), true);
}
return this.fromNow;
});
}
}
HTML
<ul>
<li *ngFor = "let model of models">
<span>{{model.created | getTimeFromNow}}</span>
</li>
</ul>
Je suis coincé avec les appels Async . Comment est-ce que je renvoie la valeur du tuyau seulement après que j'obtiens les données du serveur?