鸿蒙5.0开发【如何对异步方法进行插桩/替换】应用运维

参考如下示例:

import { util } from '@kit.ArkTS'; 
 
class Test1 { 
  static data: string = "initData"; 
 
  static async printData(arg: string) { // 异步方法 
    console.log("execute original printData"); 
    console.log("Test.data is" + Test1.data); 
    console.log('arg', arg); 
    return 0; 
  } 
} 
 
// 插桩 
util.Aspect.addBefore(Test1, "printData", true, 
  (classObj: Object, arg: string): void => { 
    console.log("execute before"); 
    Reflect.set(classObj, "data", "dataChangedByBefore"); 
    console.log("arg is " + arg); 
  } 
); 
 
Test1.printData("m1").then((res) => { 
  console.log("res = " + res.toString()); 
  console.log("Test.data = " + Test1.data); 
}); 
 
class Test2 { 
  static data: string = "initData"; 
 
  static async printData(arg: string) { // 异步方法 
    console.log("execute original printData"); 
    console.log("Test.data is" + Test2.data); 
    console.log('arg', arg); 
    return 0; 
  } 
} 
 
// 替换 
util.Aspect.replace(Test2, "printData", true, 
  // 替换成另外一个异步函数 
  async (classObj: Object, arg: string): Promise<number> => { 
    console.log("execute instead"); 
    Reflect.set(classObj, "data", "dataChangedByInstead"); 
    console.log("arg is " + arg); 
    return Promise.resolve(100); 
  }); 
 
Test2.printData("m1").then((res) => { 
  console.log("res = " + res.toString()); 
  console.log("Test.data = " + Test2.data); 
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值