Sunshine_Jian 2022-01-04 10:56 采纳率: 0%
浏览 403
已结题

将promise赋值给变量,再用变量.then方法处理成功的操作,可以吗?

将promise赋值给变量,再用变量.then方法处理成功的操作,可以吗?
代码
let resp;
if(edit_ID){
  resp = this.$axios.put(`/api/seach/list/${edit_ID}`,data);
}else{
  resp = this.$axios.post('/api/seach/list/',data);
}

 resp.then(res=>{
  console.log('success');
})
res.catch(err=>{
  console.log('error')
})

运行结果及报错内容

代码没有放在async await 里,会不会出现问题?

我的解答思路和尝试过的方法
我想要达到的结果

根据edit_ID来判断是新建还是编辑,然后选择对应的接口;然后在成功回调里的代码,都是一样的,能不能就是当到一起,

  • 写回答

3条回答 默认 最新

  • 归来巨星 前端领域新星创作者 2022-01-04 11:05
    关注

    会出问题的,你不能这样去写,因为本身 promise 是一个异步函数,你如果不采用 generator 或者 async 方式转换代码同步的话,你是不能直接去用 变量接收值得,resp 不写 await 默认是一个异步promise 得到的结果就是空,空肯定是没有.then方法的,你如果不想用 async/await 这种方式的话,可以采用以下方式 函数retrun的方式进行改写

    resp(){
      if(edit_ID){
        return this.$axios.put(`/api/seach/list/${edit_ID}`,data);
      }else{
        return this.$axios.post('/api/seach/list/',data);
      }
    }
    
    // 调用位置
    this.resp().then(res=>{
      console.log('success');
    }).catch(err=>{
      console.log('error')
    })
    
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月17日
  • 创建了问题 1月4日

悬赏问题

  • ¥15 上传图片时提交的存储类型
  • ¥15 Ubuntu开机显示器只显示kernel,是没操作系统(相关搜索:显卡驱动)
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 在rhel8中安装qemu-kvm时遇到“cannot initialize crypto:unable to initialize gcrypt“报错”
  • ¥15 arbotix没有/cmd_vel话题
  • ¥15 paddle库安装时报错提示需要安装common、dual等库,安装了上面的库以后还是显示报错未安装,要怎么办呀?
  • ¥20 找能定制Python脚本的
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?
  • ¥15 通信专业本科生论文选这两个哪个方向好研究呀