关于await内调用多个接口导致伪多线程

本文探讨了在Pinia状态管理库中使用await时遇到的问题,即由于接口响应顺序导致的‘伪’多线程现象。当在await中调用多个接口时,尽管后端未启用多线程,但可能会出现先修改数据后查询到旧数据的情况。作者提出了两种解决方案:一是通过setTimeout延迟执行后续操作确保执行顺序;二是将依赖的函数放在await外,确保按顺序执行。这两种方法有助于避免因并发问题引起的逻辑错误。
摘要由CSDN通过智能技术生成

本记录基于 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()
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值