首页 > 其他分享 >记录一次错误,鸿蒙网络请求因未接收到token而报错

记录一次错误,鸿蒙网络请求因未接收到token而报错

时间:2024-08-02 19:56:22浏览次数:18  
标签:let string 因未 await token 报错 result async

项目场景:

一个电商平台的项目


问题描述

明明添加了token拦截器但是在购物车界面却还是显示没有token

export function httpRequestGetWithToken(url:string,params?:string):Promise<BaseResp>{

  //获取token
  let tokenValue = DPUtils.getValue('token')

  async getValue(key:string){
    if(!mDataPref){
      await this.getDataPreference()
    }
    let value=''
    const result=await mDataPref?.get(key,'');
    if(result!==undefined){
      value=result.toString()
    }
    return value
  }

原因分析:

本来以为是token存储时有问题,但经过断点调试发现登录后token已经被存储。

后来又去查阅了资料,看到了一句话:await虽然是一个异步操作,但运行方式却和同步相似。

这一句话突然让我明白了,各位都知道,

同步是线程阻塞的,异步是非阻塞的,但await可以通知系统等待某某执行,而等待过程中恰好就是阻塞的,于是我产生了一个想法。。。。。。


解决方案:

export async function httpRequestGetWithToken(url:string,params?:string):Promise<BaseResp>{

  //获取token
  let tokenValue = await DPUtils.getValue('token')

只需要在获取token时添加一个await(想要使用await就必须有async),这样问题就解决了。

具体根据我的猜想应该是这样的:

promise本身就是一个异步操作,这样可能会导致网络请求的头部拦截器这一部分执行完之后才通过首选项拿到存储的token,这样的话自然会导致我的错误出现。

希望遇到类似问题可以帮到诸位。。。。。。。。。。

如果不了解Promise可以查看这篇文章,没有结合async和await使用,但有实际应用封装了一个移动端的SQLite

标签:let,string,因未,await,token,报错,result,async
From: https://blog.csdn.net/chen2023_11_14/article/details/140878677

相关文章

  • Vue 使用 vue-drag-resize 实现拖拽和随意缩放大小及安装报错处理
    一、vue-drag-resize的安装yarnaddvue-drag-resize 下面是错误解决方案:TypeError:Cannotreadpropertiesofundefined(reading‘_c’) 解决方案:在引入时加上“/src”: importVueDragResizefrom"vue-drag-resize";改成importVueDragResizefrom"vue-d......
  • springboot+vue前后端分离项目-项目搭建15-集成JWT token权限验证
    1.对之前的代码改造,之前将user存储到sessionStorage,改成存储到localStorage,全局搜索修改 之前Result.code等于0代表success,改成200代表success,vue文件全局搜索修改一、前端部分1.改造request.js,登录时将user已经存储到localStorage里,这里将user获取到,将user里的token放到......
  • windows 命令行 pip 安装报错
    pipinstalltkWARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'ProxyError('Cannotconnecttoproxy.',OSError(0,'Error'))':/simple/tk/WARNING:Retrying(R......
  • 执行`docker build -f ./dockerfile -t mycentos7:v1 .`时 `RUN yum install -y vim`
    执行dockerbuild-f./dockerfile-t时RUNyuminstall-yvim报错1.报错信息[+]Building0.9s(5/6)......
  • 【问题解决方案】npm install报错问题:npm ERR! - 多种解决方案,总有一种可以解决
    @[toc]1.问题重述安装package.json里面的包,使用npminstall但是报错2.解决方案方案1.确认根目录正确确认自己的目录是根目录(也就是处于./package.json可以找到的位置)例如--根目录----package.json----其他文件----其他文件方案2.确认文件名正确确认自己的pack......
  • vmware 更新时间报错修复
     LoadingmirrorspeedsfromcachedhostfileCouldnotretrievemirrorlisthttp://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stockerrorwas14:curl#6-"Coulsolvehost:mirrorlist.centos.org;未知的错误" 问题原因出现这个错误......
  • Hugging Face Access Tokens 四种用法
    访问HuggingFace中的资源,需要使用AccessTokens,可以在HuggingFace设置页面(https://huggingface.co/settings/tokens)生成自己的token。一旦你获得了token,可以有下面几种方法使用它:一、直接在代码中传递token类似如下代码,在代码中直接传递HuggingFace的API令牌。fro......
  • spring整合Sa-token+gateway实现微信无业务关联登录
    1、RBAC是什么?Role-BasedAccessControl,中文意思是:基于角色(Role)的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。简单来说,就是通过将权限分配给➡角色,再将角色分配给➡用户,来实现对系统资源的访问控制。一个用户拥有若干角色,每一个角色拥有若干权限。这......
  • WebApi连接数据库报错:尝试加载Oracle客户端时引发BadImageFormatException
    出现的问题  今天在公司用C#搭建一个WebApi服务,接受请求并连接数据库进行查询,但连接数据库时报错:尝试加载Oracle客户端时引发BadImageFormatException。如果安装32位客户端组件的情况下以64位模式运行,将出现此问题。问题点  我之后了解点,确定了OracleClient客户端确实安装......
  • SQL注入——报错注入
    1.何为报错注入?报错注入是一种在SQL注入攻击中利用数据库的错误信息来获取敏感数据的技术。当网站的web服务器开启了错误回显,并且数据库执行出错时,攻击者可以通过构造特定的SQL语句,让数据库在报错信息中泄露敏感数据。2.利用报错注入有哪些前提条件?Web应用程序未关闭数据库......