Angular异步函数添加if-else后返回报错,如何正确返回值?
解决Angular异步函数中if-else作用域导致的返回值报错问题
问题核心在于getApplication的作用域:你用const在if和else的代码块内分别声明变量,而const的作用域仅限于当前代码块,当你在块外尝试return时,这个变量并不存在,因此触发报错。
以下两种修复方式都能解决问题:
方式一:提前用let声明变量
在if/else外部先声明变量,再在分支内赋值,确保外部可以访问到该变量:
asyncFunction: (value) => { let getApplication; if (value.includes('SAMPLESTRING')) { getApplication = this.myService.getApplication({ id: value }) .pipe(map(({ Application }) => Application)) } else { getApplication = this.myService.getApplication({ name: value }) .pipe(map(({ Applications }) => Applications)) } return getApplication; }
方式二:直接在分支内返回(更推荐)
无需额外声明变量,直接在每个分支里返回对应的Observable,代码更简洁,还能彻底规避作用域问题:
asyncFunction: (value) => { if (value.includes('SAMPLESTRING')) { return this.myService.getApplication({ id: value }) .pipe(map(({ Application }) => Application)) } else { return this.myService.getApplication({ name: value }) .pipe(map(({ Applications }) => Applications)) } }
两种方案都能解决报错,第二种因减少了冗余变量声明,代码逻辑更清晰,更贴合RxJS的使用习惯。
内容的提问来源于stack exchange,提问作者Daniiiii
相关产品推荐
相关产品推荐

