このコードはトリプル(重要ではない)を解析し、一度に1つの駐車場を返すべきです。問題はobserver.next()を呼び出すとループが1回だけ実行されるため、ループが中断されることです。 console.logも呼び出されません。私はおそらく何かが不足していますが、observer.next()がループを壊す可能性はありますか?エラーがありますか、それとも機能ですか、それとも間違っていますか?Observable.next()breaksループ
return Observable.create(observer => {
this.fetch.get(datasetUrl).then(response => {
// Get all subjects that are parkings
const parkingTriples = [],
parkings = [],
totalspacesParking = [],
labels = [];
for (let index = 0; index < response.triples.length; index++) {
if (response.triples[index].object === 'http://vocab.datex.org/terms#UrbanParkingSite') {
parkingTriples.push(response.triples[index]);
}
if (response.triples[index].predicate === 'http://vocab.datex.org/terms#parkingNumberOfSpaces') {
totalspacesParking.push(response.triples[index]);
}
if (response.triples[index].predicate === 'http://www.w3.org/2000/01/rdf-schema#label') {
labels.push(response.triples[index]);
}
}
const _parkings = [];
for (let index = 0; index < parkingTriples.length; index++) {
const totalspacesresult = find(totalspacesParking, (o) => {
return o.subject === parkingTriples[index].subject
});
const totalspaces = parseInt(n3.Util.getLiteralValue(totalspacesresult.object), 10);
const labelresult = find(labels, (o) => {
return o.subject === parkingTriples[index].subject
});
const rdfslabel = n3.Util.getLiteralValue(labelresult.object);
const id = rdfslabel.replace(' ', '-').toLowerCase();
observer.next(new Parking(rdfslabel, parkingTriples[index].subject, id, totalspaces, datasetUrl));
console.log(observer);
}
})
})
問題を簡略化したり、テストケースを提供できますか?一般的に 'observer.next()'はあなたのコードを壊してはいけません。 –
@MarkvanStraten 'for(let index = 0; index
「オブザーバー」の署名は何ですか?通常の 'Rx.Subject'を使用すると簡略化されたテストケースが動作します –