【发布时间】:2017-06-28 16:06:45
【问题描述】:
我想知道在处理http调用时是否有更好的方法来定义angular 2 observable subscribe的回调函数而不违反Single responsibility principle 当涉及到嵌入式逻辑时,女巫会导致丑陋的脏代码。
我正在尝试使用函数变量而不是箭头函数来分隔回调逻辑,但我无法访问 this 和本地函数变量(示例中为 state)。
updateState(state: string) {
let proposition = new Proposition();
proposition.id = this.id;
proposition.state = state;
this.propositionService.updateProposition(proposition).subscribe(
(data) => {
....
// instruction using local variable
this.router.navigate(['/portfolio', state]);
....
},
.....
// instrution using this
(errors) => this.toastr.warning('Error.', 'ops !');
.....}
【问题讨论】:
-
我真的不明白你想在这里做什么。你想去订阅中的其他路线吗?您想在 router.navigate 之前定义操作吗?你能澄清一下吗?
-
实际上“=>”有你当前组件的 this 但是当你使用函数变量时,你的组件的 this 有新的 this 所以你不能得到你的局部变量。(数据)=>这是Angular 2 承诺,所以你必须使用 lemda 表达式。
-
@ER.SHASHITIWARI 我经历过,我想问如何找到一个好的替代方案
-
@ZanattMan 导航到其他根目录或其他内容,这不是问题。这只是一个示例,表明回调需要访问某些局部变量。我的问题是如何将回调逻辑分离到独立函数以拥有更简洁的代码而不是嵌入复杂的函数
标签: javascript angular typescript rxjs