首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Typescript/Angular 5-如何确保函数参数正在使用?

Typescript/Angular 5-如何确保函数参数正在使用?
EN

Stack Overflow用户
提问于 2018-08-27 23:39:19
回答 2查看 75关注 0票数 0

我正在用Angular 5和Ionic 4写一个组件。

我想传入一个刷新事件,以便在用户刷新时隐藏刷新微调器,而finally函数可以隐藏微调器。

下面是我的代码:

代码语言:javascript
复制
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();
        }
    }

注释掉的代码运行得很好,但如果不需要使用匿名函数就太好了。在将其绑定到构造函数后,它会拾取其他事件。

EN

回答 2

Stack Overflow用户

发布于 2018-08-28 14:53:17

必须提供event值。让它成为handleFinally的一个参数怎么样?匿名函数仍然需要,但它现在更短了,这不会降低可读性:

代码语言:javascript
复制
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();
      }
  }
}
票数 2
EN

Stack Overflow用户

发布于 2018-08-28 00:34:32

您仍然可以将数组函数与函数变量一起使用,如下所示:

代码语言:javascript
复制
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();
      }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52042707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档