我有一个项目数组,我想一个接一个地插入数据库,如下所示:
[{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
所以基本上,会有一个for..of循环遍历这个数组,并将它们一个接一个地插入。我希望在发生错误时退出循环,例如,错误发生在第8项之后:
[{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
^: error here
所以我想在这个阶段停止执行,如何实现呢?我的代码看起来像这样:
const [createOneUser, { isLoading, isError, isSuccess, error }] = useCreateOneUserMutation()
const bulkUsers = [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
const handleInsert = async()=>{
for(const obj of bulkUsers){
await createOneUser(obj) // <--- here
}
}
return <button onClick={handleInsert}>start bulk insert</button>
这看起来和我们通常使用useEffect
做的事情不同,但这只是一个实现它的计划草案,我不知道如何做。
如何在redux工具包查询中实现类似的逻辑?
1条答案
按热度按时间q9rjltbz1#
我能够通过使用redux的
.unwrap()
方法来解决这个问题,unwrapping mutation hook [0]给定参数返回一个您可以等待的承诺。.unwrap()
,然后await
您的查询,以检测它是否失败或已解决。重要提示:How to break out of an async for loop on button press in React
特别感谢(markerikson)
https://github.com/reduxjs/redux-toolkit/discussions/2697#discussioncomment-3646116