TypeScript 回调的正确用法


TypeScript 回调的正确用法

https://www.cnblogs.com/naiking/p/9836289.html

  • 方法一

定义:

1
2
3
4
5
6
7
8
9
10
11
12
/**
* 不推荐的回调写法
* 外部调用必须【必须】【必须】在回调参数方法后面添加.bind(this),
* 否则可能会this异常
*/
public static callBackTest(arg:number, callBack:Function) : void
{
//返回 2 x arg
let result:number = arg*2;
//不推荐直接调用回调方法,应使用callBack.call(caller,result);
callBack(result);
}

使用:

1
2
3
4
//不推荐的回调写法, 遗漏了bind(this)
xxx.callBackTest(1,this.getResult);
//不推荐的回调写法, 使用了bind(this)( √ )
xxx.callBackTest(1,this.getResult.bind(this));
  • 方法二

定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* 推荐的回调写法
* @param arg 参数
* @param caller 调用域
* @param method 指定的回调方法(兼容.bind(this) 也可以不加.bind(this) )
*/
public static callMethod(arg:number,caller:any,method:Function):void
{
//返回 2 x arg
let result:number=arg*2;
//推荐的做法 .call(caller,result);
method.call(caller,result);

}

使用:

1
2
3
//提倡的回调写法 ,有无bind(this)都可以
xxx.callMethod(1,this,this.getResult);
xxx.callMethod(1,this,this.getResult.bind(this));