VUE大家能讲讲为什么这个axios的为什么外面又套了一个promise?

axios返回的response.data可以拿来用了 但是为什么外面又套了一层promise?
用的时候还要这样去写这样不是更麻烦了吗??昨天遇到的这个问题 刚才看到一个人提问了差不多的问题 但是那个人没有贴代码 我贴上代码大家能解释一下为什么要这样做吗?谢谢

get().then(data => {   console.log(data)
})

export function get (url, data = {}) {  return new Promise((resolve, reject) => {
    axios.get(url, {params: data})
      .then(response => {
        resolve(response.data)
      }, err => {
        reject(err)
      })
  })
}


慕尼黑的夜晚无繁华
浏览 809回答 1
1回答

慕慕森

包一层Promise多此一举 完全没必要export function get (url, data = {}) {  return axios.get(url, {params: data}).then((res)=>res.data) }Promise.prototype.then如果then中的回调函数返回一个值,那么then返回的Promise将会成为接受状态,并且将返回的值作为接受状态的回调函数的参数值。如果then中的回调函数抛出一个错误,那么then返回的Promise将会成为拒绝状态,并且将抛出的错误作为拒绝状态的回调函数的参数值。如果then中的回调函数返回一个已经是接受状态的Promise,那么then返回的Promise也会成为接受状态,并且将那个Promise的接受状态的回调函数的参数值作为该被返回的Promise的接受状态回调函数的参数值。如果then中的回调函数返回一个已经是拒绝状态的Promise,那么then返回的Promise也会成为拒绝状态,并且将那个Promise的拒绝状态的回调函数的参数值作为该被返回的Promise的拒绝状态回调函数的参数值。如果then中的回调函数返回一个未定状态(pending)的Promise,那么then返回Promise的状态也是未定的,并且它的终态与那个Promise的终态相同;同时,它变为终态时调用的回调函数参数与那个Promise变为终态时的回调函数的参数是相同的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Vue.js