我有一个来自某个库的函数,它返回一个我想从另一个函数调用的 Observable。我需要将该 Observable 传播到多个函数调用中。这是我的代码的结构:
extractSignature = (xml, signatureCount = 1) => {
const observ = this.generateDigest(signedContent, alg).pipe(map(digest => {
const sigContainer = {
alg: alg,
signature: signatureValue,
signedContent: signedContent,
digest: digest
};
console.log('sigContainer inside pipe: ');
console.log(sigContainer);
return sigContainer;
}));
return observ;
}
dissasemble(xml): Observable<SignatureContainerModel[]> {
const observables: Observable<any>[] = [];
for (let i = 1; i <= count; i++) {
const extractSigObservable = this.extractSignature(xml, i);
console.log('extractSigObs inside pipe: ');
console.log(extractSigObservable);
const observ = extractSigObservable.pipe(map(sigContainer => {
console.log('sigContainer inside pipe: ');
console.log(sigContainer);
const hashContainers: HashContainerModel[] = [];
const hashContainer: HashContainerModel = new HashContainerModel();
hashContainer.digestAlgorithm = sigContainer.alg;
hashContainer.bytes = sigContainer.digest;
hashContainers.push(hashContainer);
const signatureContainer: SignatureContainerModel = {
hashContainers: hashContainers,
signature: sigContainer.signature
};
console.log('observable inside pipe: ');
console.log(observ);
}));
observables.push(observ);
}
return forkJoin(observables);
}
verify() {
this.sigExec.dissasemble(this.fileContent).subscribe((signatureContainers: SignatureContainerModel[]) => {
// signatureContainers is [undefined] here
console.log('Sig Containers: ');
console.log(signatureContainers);
this.verifyHash(signatureContainers);
});
}
signatureContainers变量在订阅中是 [undefined]。我不确定问题是什么,因为当我检查我在 map 函数中写的所有日志时,它们看起来很好
RXJS 文档forkJoin
:
请注意,如果任何内部 observable 提供给
forkJoin
错误,如果您没有在内部 observable 上正确捕获错误,您将失去任何其他已经完成或已经完成的 observable 的值。如果您只关心所有内部 observables 成功完成,您可以在外部捕获错误。https://www.learnrxjs.io/learn-rxjs/operators/combination/forkjoin
您有可能在管道内出错,并且这些值正在丢失。
另外,我注意到你没有从你的管道中返回任何东西。这也可能是一个问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句