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

使用Lodash _.once函数时的竞态条件问题及解决方案咨询

问题解答

第二次调用fetch的返回值

当第二个任务并发调用fetch时,会直接返回第一个myRealFetch调用所返回的Promise实例。

Lodash的_.once对异步函数的处理逻辑是:

  • 第一次调用时,执行原函数myRealFetch,并缓存它返回的Promise
  • 后续所有调用,不管第一次的Promise是否已完成,都会直接返回这个缓存的Promise

哪怕第二个任务在myRealFetch还在执行(5秒耗时过程中)就调用fetch,它拿到的也是同一个Promise。等5秒后这个Promise状态变更时,两个任务里的result都会获取到同一个最终结果。

是否有内置处理方式?

_.once本身就内置了这种并发场景的处理——它不会重复执行原函数,而是复用同一个异步结果的Promise,天然避免了并发调用导致的重复执行问题。当前代码的写法已经能保证myRealFetch只会被执行一次,所有后续调用都共享它的异步结果,不需要额外做其他处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 22:12:32