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

将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日