Ich benutze eine forkJoin
von Observablen, aber ich habe Probleme, Argumente in meinem Observables zu übergeben. im Wert von Codezeilen mehr als tausend Worte:Pass Argumente in Array von Observablen
for(var key in pdfObjects){
let pdf = {pdfObjects[key]};
observables.push(new Observable(observer => {
this.createPDF(pdf).subscribe((pdfFile) => {
// Do something with my pdfFile
observer.complete();
})
})
}
Observable.forkJoin(observables).subscribe(
(next) => {},
(error) => {},
(completed) => {
console.log('completed');
}
);
(ich habe den Code für eine bessere Klarheit vereinfacht)
Wie man hier sehen kann, das Problem ist, dass, wenn der Code die Observablen ausführt, die pdf
Variable gleich der letzten pdfObjects
anstatt eine andere Variable für jede Observable zu sein.
Die Frage ist, wie kann ich meine pdf
Variable "weitergeben" und "kopieren", so dass es ein Unterschied für jedes Observable ist?
observables.push(new Observable(observer => {
this.createPDF(pdf).subscribe((pdfFile) => {
// Do something with my pdfFile
observer.next(pdf); // <-----
});
})
bearbeiten
Ihr Problem ist die Verwendung von Verschlüssen innerhalb von Schleifen bezogen werden:
Meinen Sie, den Wert mit Klammern im Let zu umgeben, ein neues Objekt mit einem Schlüssel von 'pdfObjects' zu erstellen, oder ist das ein Tippfehler bei der Vereinfachung? –