私はオブザーバブルのforkJoin
を使用していますが、私はオブザーバブルで引数を渡すのに苦労しています。千の言葉に値するコードの行:オブザーバブルの配列に引数を渡す
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');
}
);
(私はより明確にするためのコードを簡素化している)
あなたがここに見ることができるように、問題はコードが観測を実行したときに、pdf
変数であるということです各観測値に対して異なる変数ではなく、最後のpdfObjects
に等しくなります。
質問は私のpdf
変数をどのように '渡し'、 'コピー'すればよいのですか?
observables.push(new Observable(observer => {
this.createPDF(pdf).subscribe((pdfFile) => {
// Do something with my pdfFile
observer.next(pdf); // <-----
});
})
編集
あなたの問題は、ループ内でクロージャの使用に関連している:
値を「let」の中に囲み、「pdfObjects」というキーを持つ新しいオブジェクトを作成することを意味しましたか、簡略化するときに誤植ですか? –