You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何创建每次调用都执行的方法且无需修改服务代码?

解决方案:无需修改服务代码,让RunTest每次调用都执行

问题根源在于你当前的myMethod是RunTest()执行后返回的已决议Promise,模块初始化时就会执行一次RunTest,后续所有await myMethod拿到的都是同一个结果,不会再触发RunTest逻辑。

你可以通过将myMethod改为自定义thenable对象的方式解决,完全不需要修改服务中的代码:

async function RunTest() {
  // 保留你的原有逻辑
  return /* 你的返回值 */;
} 

// 替换原来的 export const myMethod = RunTest();
export const myMethod = {
  then(resolve, reject) {
    // 每次触发then时,重新执行RunTest
    RunTest().then(resolve).catch(reject);
  }
};

原理说明

  • await操作符不仅支持Promise,还支持任何带有then方法的对象(即thenable)。
  • 每次执行await myMethod时,JS引擎会自动调用这个对象的then方法,并传入resolve/reject回调。
  • 我们在自定义的then方法里重新调用RunTest(),这样每次await都会触发RunTest的完整逻辑,返回全新的结果。

验证效果

比如给RunTest加个日志:

async function RunTest() {
  console.log("RunTest执行了");
  return "新的客户端实例";
}

此时每次调用服务中的getValue,控制台都会打印"RunTest执行了",而不是仅在初始化时打印一次。

内容的提问来源于stack exchange,提问作者Arash EM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:15:45