基于Vue的场景解决

场景-二次发送失败

场景描述

  • 描述
    • 给一个账户更新名称,第一次更新值后端返回已存在,然后修改,重新提交,但是这次都没有接口调用。
  • 流程
    • 点击提交后,表单数据formData有一个表单项payType是数组形式,校验后,将payType通过JSON序列化,然后调用接口,axios将请求打到后端。然后路由返回到上一个页面。
    • 当前页面已进入,在created中拉取数据,会将payType反序列化为数组。

技术背景

  • axios
  • json序列化和反序列化
  • promise
    • finally

方案解决

  • 表单项形式问题
    • 分析
      • 被卡了一个bug,关键在payType的形式,是序列化后还是反序列化。
      • 一般成功后,会直接到上一个页面,然后再次进入,会反序列化为数组形式。发送请求时,也会先序列化,但是若没有操作成功,也就是后端返回已存在相同值,不会返回上一个页面,payType保持为字符串形式,再次点击时,重新走序列化流程,会调用数组的map拼接一个字符串,但是字符串没有相关函数,然后就会报错,就不会走到发送请求这一步,所以没有调用接口。
    • 处理
      • 每次序列化之后,无论是否成功,还原为数组形式。
  • 请求数据格式问题
    • 分析
      • 在上面问题的处理中,我设置了在发送请求后,同步修改表单项payType,还原为数组形式,但是请求返回400错误,请求数据格式有问题,不是我预想的发送前的序列化之后的字符串形式,是数组形式。
      • 我将发送请求后的同步修改payType时,随便设置为任意数据,发送请求中的载体都是该任意数据。
      • 最后是formData传递的是个引用地址,axios网络库是异步发送的,在同步修改后,发送请求读取的该地址中的数据是修改后的。
    • 处理
      • 在请求返回的promise使用finally中还原数据,确保了正确的时序。

参考资料

相关推荐
kyriewen34 分钟前
我花3天抓了一个幽灵bug,凶手藏在第4层
前端·javascript·程序员
IT_陈寒1 小时前
Java里用Stream.parallel()翻车实录,这性能还不如单线程
前端·人工智能·后端
Bs_MoneyMagnet1 小时前
基于springboot+vue的生态果园采摘预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·计算机毕业设计
wangchunyu1141 小时前
JavaScript 零基础入门教程
前端
hanchenxing2 小时前
前端异步任务三方案:Celery vs Redis Stream vs BullMQ 实战对比消息队列
前端·数据库·redis·异步任务·方案对比
默_笙2 小时前
⚓ AI 的"官方答题卡":withStructuredOutput 与结构化输出的终局之战
前端·javascript
掘金挖土2 小时前
前端手摸手跑路之 AI 应用开发(五)
前端·后端
小羊没烦恼!3 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
码上成长3 小时前
Mapbox 围栏编辑踩过的几个坑:key 串了、形状炸了、icon 挡住绿点
前端·前端框架
SGAMERrain4 小时前
做了一个免费的在线绘画网格工具 DrawGrid,聊聊一个小工具是怎么越做越完整的
前端