hooks icon indicating copy to clipboard operation
hooks copied to clipboard

useRequest 同时执行多次 runAsync, 只执行了最后一个 then 函数

Open yi-man opened this issue 2 years ago • 12 comments

现象

同时执行多次 runAsync, 只执行了最后一个 then 函数

截屏2023-02-24 16 51 55

可能有问题的代码

应该是由下方代码引起

if (currentCount !== this.count) {
      // prevent run.then when request is canceled
      return new Promise(() => {});
    }

demo

https://codesandbox.io/s/demo-for-ahooks-forked-5yk8lg?file=/src/App.js

yi-man avatar Feb 24 '23 08:02 yi-man

@crazylxr 见哥 看下这个是符合预期的吗?我测试的 React v16-v18 都存在这个问题

liuyib avatar Feb 25 '23 09:02 liuyib

符合预期的哈。

crazylxr avatar Feb 26 '23 13:02 crazylxr

@yi-man 这是符合预期的行为,issue 关了哈,还有其他疑问的话我再重开 issue

liuyib avatar Feb 26 '23 15:02 liuyib

我说怎么循环里 runAsync 请求一直得不到正确的数据,这是坑,人为制造的坑,一个请求 api,需要你做防抖节流吗?然后文档还不写清楚这个点。

zilianghm avatar May 08 '23 08:05 zilianghm

我说怎么循环里 runAsync 请求一直得不到正确的数据,这是坑,人为制造的坑,一个请求 api,需要你做防抖节流吗?然后文档还不写清楚这个点。

这不是防抖节流,这属于竟态请求。文档里是有写的,https://ahooks.js.org/zh-CN/hooks/use-request/basic#%E5%8F%96%E6%B6%88%E5%93%8D%E5%BA%94 。

请把文档好好看完再说话

crazylxr avatar May 08 '23 11:05 crazylxr

然后文档还不写清楚这个点

image

觉着文档不够清晰,可以提个 PR 帮忙改进~ @zilianghm

liuyib avatar May 08 '23 15:05 liuyib

希望能有参数能修改这个机制,我今天也遇到了

94zn avatar Sep 21 '23 11:09 94zn

希望能够有参数控制不启用竞态,比如只是想用 useRequest 包装 loading 以及 error 的状态,发现多次调用只回调了一次,也会很疑惑,甚至建议是可以抛错出来的,都会比直接把上个请求 padding 更合理 @liuyib

skyfore avatar Jan 11 '24 06:01 skyfore

没有什么参数控制吗,有时不想要这个竞态

soulcm avatar Mar 08 '24 01:03 soulcm

我其实希望后续的请求不要发起,也就是说保留第一个。

nianyi778 avatar Mar 20 '24 04:03 nianyi778

我其实希望后续的请求不要发起,只要保留第一个。

如果可以配置规则就好了

nianyi778 avatar Mar 20 '24 04:03 nianyi778

这个问题下个大版本会重点考虑

crazylxr avatar Mar 28 '24 01:03 crazylxr