Je travaille actuellement sur une application Angular 2 mais j'ai quelques problèmes. En effet, j'ai une méthode qui obtient des données à partir d'une base de données. Cependant j'essaye de copier ces données à un autre, pour faire cela j'ai besoin de faire plusieurs demandes de HTTP (le nombre de demandes ne sont jamais les mêmes).Angular 2 - Demande HTTP multiple dans le même temps
Voici ma méthode migrate. D'abord, je reçois les données de DB puis je tente de les poster dans l'autre
service.getDatas().subscribe(data => {
let datas = data.json().data;
if (datas) {
let requests = [];
for (let data of datas) {
let req = service.addData(data); // addData() return an Observable
requests.push(req);
}
let c: Observable<any> = Observable.forkJoin(requests);
return c;
}
});
Ou Quand je suis subribing à la méthode que je n'ai pas de réponse de celui-ci.
Voici mon abonné
service.migrateData(targetDB).subscribe(res => {
console.log(res);
});
Je veux que ma méthode pour retourner une réponse lorsque toutes les données ont été post! En fait, lorsque j'appelle la méthode addData(), elle ne déclenche même pas la requête http, rien ne se passe. J'ai essayé d'utiliser une méthode RxJs comme concat et forkJoin mais rien. Ou juste j'ai échoué à les utiliser.
Voici ma méthode addData()
addData(data) {
let headers = new Headers({
'Content-Type': 'application/json'
});
headers.append('Authorization', 'Basic ' + btoa('username + ':' + 'password));
let _data = JSON.stringify({data: data});
return this.http.post('https://something.com', _data, {headers: headers});
}
Cette méthode fonctionne très bien pour les autres cas utiliser.
Merci pour votre aide!
Je pense que vous devez vous abonner à un observable avant qu'il ne soit exécuté. service.addData (données).abonnez-vous() –
Si je fais cela, forkjoin aura un tableau d'abonnés et non un tableau observable: /! –
Que diriez-vous de c.subscribe()? https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.md –