【发布时间】:2019-12-13 18:22:30
【问题描述】:
我正在使用 Observable 从 Http 端点获取数据。如果我没有在这一行 return https.get(urls[i], res => 中添加 return 语句,我会收到此错误 A function whose declared type is neither 'void' nor 'any' must return a value.。在此处添加 return 语句时,urls 数组无法访问第二个端点。有什么办法可以解决这个问题吗?
const https = require('https');
@Injectable()
export class MessageService {
constructor() {}
message = new ProductMessage();
publishMessages(productEvent: ProductEvent): Observable<any> {
let json = '';
const url = this.configService.get('SITEMAP_ENDPOINT');
const urls = [
'https://' + url + '/blc,
'https://' + url + '/eye
];
try {
for (let i = 0; i < urls.length; i++) {
return https.get(urls[i], res => { ---------> How can I remove return?
res.on('data', function(chunk) {
json += chunk;
});
res.on('end', function() {
const result = JSON.parse(json);
for (let i = 0; i < result.length; i++) {
for (let j = 0; j < result[i].products.length; j++) {
if (
//some condition
) {
for (let k = 0; k < productEvent.productCodes.length; k++) {
if (
//some condition
) {
console.log(result[i].products[j].productCode);
}
}
}else {
console.log('No data found');
return;
}
}
}
});
});
}
} catch (err) {
console.error(err);
}
}
}
【问题讨论】:
-
如果您不希望函数返回任何内容,为什么还要声明该函数具有
void以外的返回类型? -
我不知道如何在此处提及
void -
publishMessages(productEvent: ProductEvent): void应该是你的第一次尝试 -
不使用 Observable 我在 JSON.parse 中遇到语法错误。看起来 observable 是必须的。还有其他建议吗?
-
您实际上想在这里做什么?我对内部带有 return 的 for 循环特别好奇。那一定是搞错了???
标签: node.js typescript