這段代碼解析三元組(不是那麼重要),並且應該一次返回一個停車位。問題在於調用observer.next()會中斷循環,因爲它只運行一次。 console.log也不會被調用。我可能錯過了一些東西,但有可能observer.next()打破循環?有沒有錯誤,或者它是一個功能,或者我只是明顯錯誤?Observable.next()休息循環
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
'observer'的簽名是什麼?當使用一個普通的'Rx.Subject'時,你的簡化測試用例將起作用 –