所有代码路径都不返回值吗?

时间:2018-11-16 16:41:44

标签: javascript arrays angular typescript

任何想法,这是什么问题,我收到错误消息“并非所有代码路径都返回值”?

还有使用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;
            }
        }


    });
}

1 个答案:

答案 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并没有什么特别的错误。