我正在用Angular 5和Ionic 4写一个组件。
我想传入一个刷新事件,以便在用户刷新时隐藏刷新微调器,而finally函数可以隐藏微调器。
下面是我的代码:
export class UserInfoService {
constructor(private employeeService: EmployeeService) {
this.handleSuccess = this.handleSuccess.bind(this);
this.processData = this.processData.bind(this);
this.handleFinally = this.handleFinally.bind(this);
}
getEmployeeInfo(event?: Refresher) {
// console.log(event);
return this.employeeService
.getEmployeeInfo()
.map(this.handleSuccess)
.finally(this.handleFinally);
// .finally(() => {
// if (event != null) {
// console.log(' event ', event);
// event.complete();
// }
// });
}
handleFinally() {
console.log(' handle finally ', event);
if (event != null) {
console.log(' event ', event);
event.complete();
}
}注释掉的代码运行得很好,但如果不需要使用匿名函数就太好了。在将其绑定到构造函数后,它会拾取其他事件。
发布于 2018-08-28 14:53:17
必须提供event值。让它成为handleFinally的一个参数怎么样?匿名函数仍然需要,但它现在更短了,这不会降低可读性:
export class UserInfoService {
constructor(private readonly employeeService: EmployeeService) {
this.handleSuccess = this.handleSuccess.bind(this);
this.processData = this.processData.bind(this);
}
getEmployeeInfo(event?: Refresher) {
// console.log(event);
return this.employeeService
.getEmployeeInfo()
.map(this.handleSuccess)
.finally(() => this.handleFinally(event));
}
handleFinally(event?: Refresher) {
console.log(' handle finally ', event);
if (event) {
console.log(' event ', event);
event.complete();
}
}
}发布于 2018-08-28 00:34:32
您仍然可以将数组函数与函数变量一起使用,如下所示:
export class UserInfoService {
constructor(private employeeService: EmployeeService) {
this.handleSuccess = this.handleSuccess.bind(this);
this.processData = this.processData.bind(this);
}
getEmployeeInfo(event?: Refresher) {
// console.log(event);
return this.employeeService
.getEmployeeInfo()
.map(this.handleSuccess)
.finally(this.handleFinally);
}
handleFinally = (event?: Refresher) => {
console.log(' handle finally ', event);
if (event != null) {
console.log(' event ', event);
event.complete();
}
}
}https://stackoverflow.com/questions/52042707
复制相似问题