本记录基于 setup语法糖中的await
原因:将数据刷新绑定在pinia监听上,导致await内调用多个接口,属于书写错误(不得不说pinia的响应真的快)
在await中如果调用多个后端接口,后端未开启多线程但接口间有响应快慢,会出现’伪‘多线程。
例如先修改数据,后查询数据(几乎是同时请求,但监听的结果来看确实有先后),结果确实先得到修改前的查询结果,后修改。
两种解决方法——
一····
将需要后触发的函数添加定时器
const xxxx = async () =>{
await fn1() => {
clearTimeout(timer.value)
timer.value = setTimeout(() => {
fn2()
}, 100)
}
}
二·····
老老实实写在await外面
const xxxx = async () =>{
await fn1() => {
}
fn2()
}
本文探讨了在Pinia状态管理库中使用await时遇到的问题,即由于接口响应顺序导致的‘伪’多线程现象。当在await中调用多个接口时,尽管后端未启用多线程,但可能会出现先修改数据后查询到旧数据的情况。作者提出了两种解决方案:一是通过setTimeout延迟执行后续操作确保执行顺序;二是将依赖的函数放在await外,确保按顺序执行。这两种方法有助于避免因并发问题引起的逻辑错误。

被折叠的 条评论
为什么被折叠?



