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));
|