任何想法,这是什么问题,我收到错误消息“并非所有代码路径都返回值”?
还有使用ES6而不是forEach编写代码的更好方法吗?
main.ts
if (rxInfos.length && rxInfos !== undefined) {
rxInfos.forEach((rxInfo: any) => {
// const requestArray: IRequestURL[] = [];
for (const member of specialtyMembers) {
if (member.indexID === rxInfo.indexID) {
proxyMember = member;
if (!member.dateOfBirth) {
statusDesc = "member dateOfbirth not found";
return Promise.reject(this.errorHandler(request, statusDesc));
}
const body: any = this.buildSingleRequestBody(proxyMember, rxInfo);
const requestObject = this.specialtyQuestionRequest(body);
this.requestArray.push(requestObject);
break;
}
}
});
}
答案 0 :(得分:1)
仅当其中一个成员条目匹配时,才返回一个值(一个Promise)。不知道如果没有匹配该怎么办,但是您可能想以任何一种方式返回一个Promise,因此在循环后添加return Promise.resolve()来处理这种情况:
if (rxInfos.length && rxInfos !== undefined) {
rxInfos.forEach((rxInfo: any) => {
// const requestArray: IRequestURL[] = [];
for (const member of specialtyMembers) {
if (member.indexID === rxInfo.indexID) {
proxyMember = member;
if (!member.dateOfBirth) {
statusDesc = "member dateOfbirth not found";
return Promise.reject(this.errorHandler(request, statusDesc));
}
const body: any = this.buildSingleRequestBody(proxyMember, rxInfo);
const requestObject = this.specialtyQuestionRequest(body);
this.requestArray.push(requestObject);
break;
}
}
return Promise.resolve();
});
}
鉴于您提供的内容,在此处使用forEach并没有什么特别的错误。