如何对异步方法进行插桩/替换

如何对异步方法进行插桩/替换

HarmonyOS
2024-06-13 23:17:44
1003浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
flyCloud00

插桩:

class Test { 
  static data: string = "initData"; 
  static async printData(arg: string) {  // 异步方法 
    console.log("execute original printData"); 
    console.log("Test.data is" + Test.data); 
    console.log(arg); 
    return 0; 
  } 
} 
// 插桩 
util.Aspect.addBefore(Test, "printData", true, 
  (classObj: Object, arg: string): void => { 
    console.log("execute before"); 
    Reflect.set(classObj, "data", "dataChangedByBefore"); 
    console.log("arg is " + arg); 
  } 
); 
 
Test.printData("m1").then((res) => { 
  console.log("res = " + res.toString()); 
  console.log("Test.data = " + Test.data); 
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

替换:

class Test { 
  static data: string = "initData"; 
  static async printData(arg: string) {  // 异步方法 
    console.log("execute original printData"); 
    console.log("Test.data is" + Test.data); 
    console.log(arg); 
    return 0; 
  } 
} 
// 插桩 
util.Aspect.replace(Test, "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); 
  }); 
 
Test.printData("m1").then((res) => { 
  console.log("res = " + res.toString()); 
  console.log("Test.data = " + Test.data); 
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
分享
微博
QQ
微信
回复
2024-06-14 22:33:04


相关问题
如何namespace中的函数替换
1437浏览 • 1回复 待解决
HarmonyOS 如何
493浏览 • 1回复 待解决
HarmonyOS 如何做行为统计
1094浏览 • 1回复 待解决
HarmonyOS C++函数功能
722浏览 • 1回复 待解决
运行时AOPdemo测试
1899浏览 • 1回复 待解决
基于AOP的代码,都有哪些场景?
1597浏览 • 1回复 待解决
如何Serviceabbility进行调试?
3871浏览 • 1回复 待解决
异步是否主线程有影响
1285浏览 • 1回复 待解决
如何网页进行预加载?
1608浏览 • 1回复 待解决
如何网页进行预连接?
1008浏览 • 1回复 待解决
ArkTs中异步方法如何转变成同步方法
3465浏览 • 0回复 待解决
鸿蒙是否进行异步通信?
4800浏览 • 1回复 待解决
如何JSON数据进行解析优化
1543浏览 • 1回复 待解决
如何图片进行高斯模糊处理
3032浏览 • 1回复 待解决