作者:大脸猫妈妈-啊珍妮妮_786 | 来源:互联网 | 2023-09-11 16:35
我创建了一个服务,该服务将调用端点并遍历json数据以访问特定字段。我已经使用嵌套的for
循环来访问数据。
为减少代码的复杂性,我不得不采用不同的方法来调用彼此。如果我在使用较小的方法之前控制台记录数据,则该数据可用。但是当我进入较小的函数并传递参数数据到undefined
之后。
访问该字段是否出错?
这是我的服务文件:
@Injectable()
export class MessageService {
constructor() {}
publishMessages(productEvent: ProductEvent): Observable {
let json = '';
const url = this.configService.get('SITEMAP_ENDPOINT');
const urls = [url + '/sitemap',url + 'retrieve'];
try {
for (let i = 0; i return https.get(urls[i],res => {
res.on('data',chunk => {
json += chunk;
});
res.on('end',() => {
const result = JSON.parse(json);
this.processMessages(productEvent,result);
});
});
}
} catch (err) {
console.error(err);
}
}
private processMessages(productEvent: ProductEvent,result) {
console.log('MessageService.processMessages - entry');
for (let i = 0; i for (let j = 0; j const resultProducts = result[i].products[j];
console.log('Getting data' + resultProducts.productType); -------> Able to access data here
const results = result[i];
const source: string = productEvent.source;
if (
productEvent.vehicleType.length !== 0 &&
productEvent.vehicleType !== undefined &&
productEvent.vehicleType !== null &&
productEvent.source !== null
) {
this.publishVehicleType(
productEvent,results,resultProducts,source,);
} else {
console.log('No data found');
return;
}
}
}
console.log('MessageService.publish - exit');
}
private publishVehicleType(productEvent,results) {
console.log('No data is shown' + resultProducts.productType); -------> Data is undefined here
}
}
您以错误的顺序传递了参数。您的方法签名是这样的:
private publishVehicleType(productEvent,resultProducts,source,results)
...,您这样称呼它,因此该方法假定的resultsProducts
实际上是results
:
this.publishVehicleType(productEvent,results,source);
尝试这样调用(将results
移至第4个参数):
this.publishVehicleType(productEvent,results);