首页 > 其他分享 >在使用异步请求后把值存入localstore并且在其他变量中首次通过localstore获取不到值

在使用异步请求后把值存入localstore并且在其他变量中首次通过localstore获取不到值

时间:2023-08-08 17:44:25浏览次数:47  
标签:异步 localstore ranks 存入 获取 localStorage type

问题

写了一个方法A,里面有使用AXIOS进行请求(异步),并且把请求后的数据存入localstore,此方法在onMounted中进行调用,之后在其他地方使用时(通过读取localstore来获取值并给变量赋值),发现首次调用是获取不了值进行展示的,刷新后或者切换页面回来后就是按预期展示了。

推断

方法A是异步执行的,但是localstore是同步的,因而在给使用的变量赋值的时候,有可能出现方法A还没有完成数据的获取和存储,但是你已经需要去获取并且使用数据了(通过localstore),因此导致了首次获取不到数据,之后就可以正常获取了

解决

把调用作为A方法的一部分,在A方法执行后才继续调用

代码

const ranks_type
async FunctionA(){
  await api.get('/test').then((res: any) => {
    localStorage.removeItem('ranks_type')
    localStorage.setItem('ranks_type', res.data.get_time)
  })
}
onMounted(() => {
  //  问题写法
  FunctionA()
  ranks_type.value = JSON.parse(localStorage.getItem('ranks_type') ?? '[]')

  //  解决写法
  Function A().then(() => {
    ranks_type.value = JSON.parse(localStorage.getItem('ranks_type') ?? '[]')
})

技术有限,欢迎评论指正

标签:异步,localstore,ranks,存入,获取,localStorage,type
From: https://www.cnblogs.com/MorningMaple/p/17615012.html

相关文章

  • Linux异步通知---fasync_helper()、kill_fasync()函数介绍与使用
    转载:Linux异步通知---fasync_helper()、kill_fasync()函数介绍与使用_面朝大海0902的博客-CSDN博客一、fasync_helper()与kill_fasync()函数应用程序通过fcntl置FASYNC标志位,触发对应驱动文件的fasync()函数执行(上节有解释原因Linux异步通知—signal()、fcntl()函数介绍与使用),该......
  • 异步通知example+fcntl
    1,异步通知异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”的概念,比较准确的称谓是“信号驱动的异步I/O”。信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中......
  • 异步通知
    阻塞与非阻塞访问、 poll()函数提供了较好的解决设备访问的机制,但是如果有了异步通知,整套机制则更加完整了。在设备驱动中使用异步通知可以使得在进行对设备的访问时,由驱动主动通知应用程序进行访问。这样,使用非阻塞I/O的应用程序无须轮询设备是否可访问,而阻塞访问也可以......
  • 异常信息怎么转string保存入库
    首先说我们可能都会遇上这样的需求,进行trycatch捕获到异常,然后将异常信息存储到到DB中,而jdk自带的e.printStackTrace(),是直接将异常信息进行输出,没法进行保存。ExceptionUtils.getStackTrace(e)源自: org.apache.commons.lang3.exception;......
  • Android协程带你飞越传统异步枷锁
    引言在Android开发中,处理异步任务一直是一项挑战。以往的回调和线程管理方式复杂繁琐,使得代码难以维护和阅读。Jetpack引入的Coroutine(协程)成为了异步编程的新标杆。本文将深入探讨AndroidJetpackCoroutine的使用、原理以及高级用法,助您在异步编程的路上游刃有余。什么是Coroutin......
  • c# 同步 异步 (转)
    技巧c#Task返回值Task返回值,目前有2种情况,一种是异步async返回值,一种是同步返回值第一种:异步返回值Task方法如果加了async关键字,那么就是异步返回方法,如果是异步返回方法,需要返回一个值时,直接returnvalue,就可以了。第二种:同步返回值Task方法如果没有加async关键字,需要返回......
  • UART异步通信配置步骤/HAL
    1串口工作参数MX_USART2_UART_Init2底层初始化HAL_UART_MspInit3开启串口异步接收中断HAL_UART_Receive_IT4设置优先级,使能中断HAL_NVIC_SetPriority / HAL_NVIC_SetPriority5编写中断服务函数USART2_IRQHandler/HAL_UART_IRQHandler/HAL_UART_R......
  • 异步请求返回处理之finally的用途,代码规范摸索【玩转JavaScript】
    前言最近在改动老代码时,发现了一个有趣的现象。对于异步请求返回结果处理中,使用finally做兜底处理,不同的页面并不统一,也就是有的页面使用了,有的页面没使用,没使用的页面增加了额外的失败的处理。所以finally到底要不要统一?本着代码规范化原则的思维,我准备一探究竟。文章速度finally......
  • picasso--不得不看的异步图片加载与缓存开源库
    是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能。仅仅只需要一行代码就能完全实现图片的异步加载:Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);......
  • 异步方法重难点
    返回值是void的异步方法,绝对不能向外抛出异常,否则该异常会直接抛到CLR,导致进程终止。下面的代码不会导致进程终止publicstaticasyncvoidTest(){try{awaitAsyncMethodWillThrowException();//await后面的异步方法抛出的异常能在内部被catch......