这个封装请求既执行了then又执行了catch怎么回事?

作者站长头像
站长
· 阅读数 4

会同时输出111和222

api.common_post('test',{
  content: this.data.content
}).then(res=>{
  console.log(111)
}).catch(fail=>{
  console.log(222)
})



const http = ({ url = '',header, param = {}, method} = {}) => {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url,
      data: param,
      header: header||{
        'content-type': 'application/json'
      },
      method,
      complete: (res) => {
        resolve(res.data)
      },
      fail: error=>{
        resolve(error)
      }
    })
  })
}
回复
1个回答
avatar
test
2024-07-08

应该使用 success, 而不是 completecomplete 是指请求后的执行的函数,所以如果当你请求失败,completefail 都会执行

wx.request({
      xxxxxxx,
      success: (res) => {
        resolve(res.data)
      },
      fail: error=>{
        resolve(error)
      }
    })
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容